Java异常

1.NullPointException

java.lang.NullPointException,就是我们经常遇到的空指针异常。

java是没有指针的,这里说的"java指针"指的就是java的引用,空指针就是空引用,java空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常。

列如用一个值为null的对象去调用某个方法,就会抛出NullPointException异常

   public static void main(String[] args) {

           String str = new String("hello");
//将str对象置为null
str = null;
//检索下标为1的元素
str.charAt(1);
}

在第7行,用值为null的str去调用charAt(),运行的时候就抛出了空指针异常

2.ArithmeticExecption

java.lang.ArithmeticException是出现异常的运算条件时,抛出此异常。

例如,一个整数“除以零”时,就会抛出运算异常

  public static void main(String[] args) {
//整数除以0
int num = 3/0; }

运行时抛出 “java.lang.ArithmeticException: / by zero“

3.ClassCastException

java.lang.ClassCastException,强制类型转换异常。

通常是进行强制类型转换时候出的错误,一般发生在父类转换为子类、sql映射(resultType="X")这些操作上

案例:

Animal表示动物类,Dog表示狗类,是动物的子类,Cat表示猫类,是动物的子类。看下面的代码:

  Animal a1 = new Dog();
Animal a2 = new Cat();

Dog d1 = (Dog)a1;
Dog d2 = (Dog)a2;

第4行代码和第5行代码基本相同,从字面意思看都是把动物(Animal)强制转换为狗(Dog),但是第5行代码就会在运行的时候抛出java.lang.ClassCastException异常。

4.ArrayIndexOutOfBoundsException

java.lang.ArrayIndexOutOfBoundsException,数组下标越界异常。 这其实就是 数组越界了的问题

数组就比喻作一个大桌子,桌子上会有很多个抽屉用来装东西,制造n个抽屉就只能用n个抽屉

java中的数组空间分配是从0到它的length-1,

如下,第2行定义了一个长度为4的数组

  //数组下标0,1,2,3
int[] arr = {1,2,3,4};
System.out.println(arr[5]);

在第3行使用的根本就不存在的下标5,使用了不存在的“5号抽屉”,所以下标越界,运行时抛出java.lang.ArrayIndexOutOfBoundsException

5.FileNotFoundException

java.io.FileNotFoundException,一般为“拒绝访问”和“系统找不到指定路径”两种情况。

情况1:对文件进行输入输出流操作,也就是InputStream和OutputStream操作时,如果填写的路径不存在,那么会报系统找不到指定路径异常提示。

情况2:对文件进行输入输出流操作,如果路径指定的是目录(没有指定某个文件)时,就会报拒绝访问异常。(如果对本地磁盘没有访问权限的话也会报这个异常)

6.NumberFormatException

java.lang.NumberFormatException,数字格式化异常(数字转换异常)。

当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,则会抛出该异常。

  String str = "ABC";
int value = Integer.parseInt(str);

在第2行调用方法将字符串转换为int类型,由于ABC不可能转换为数字,所以运行时抛出java.lang.NumberFormatException异常。

parseInt()是将字符串转换为int类型的方法

还有第二种情况:

int类型存储范围是-2的31次方到2的31次方-1。

如果你的 String str= "值 "; 超过了int类型最大的值,也会抛出此异常

  String str = "999999999999999999999999999";
int value = Integer.parseInt(str);

7.SQLException

java.sql.SQLException,SQL异常。

当使用 JDBC与数据源进行交互的时候发生错误,则会抛出名为 SQLException的异常。

8.IOException

java.io.IOException,IO异常。

在读写数据的时候经常会遇到这个异常,一般都是路径拼写错误导致的

9.NoSuchMethodException

java.lang.NoSuchMethodException,找不到方法异常

JAVA学习过程中遇到的BUG的更多相关文章

  1. Java学习过程中的总结的小知识点(长期更新)

    Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...

  2. java学习过程中遇到的坑及解决方法

    1. Table 'my_data_base.gjp_zhangwu' doesn't exist Query: select * from gjp_zhangwu Parameters: 数据库中的 ...

  3. Java学习过程中的收获

    1. String <--> Date 这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new ...

  4. Java学习过程中要记录的地方--汇总

    1.Map的子类 HashMap 是哈希表,根据哈希算法来存的,取出来不一定是按照原来的循序: Ctrl+T 可以看到 HashMap下面有 LinkHashMap 是线性实现的,里面有顺序. --- ...

  5. 在Java编码中,如何减少bug数量

    众所周知,Java编程语言在IT行业是企业中不可缺少的.不管,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能.但在编写代码时,bug永远是困扰每一位从业者的头号 ...

  6. Java基础学习总结(81)——如何尽可能的减少Java代码中bug

    Java编程语言的人气自然无需质疑,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能. 不过在编写代码时,bug永远是困扰每一位从业者的头号难题.在今天的文章中, ...

  7. JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)

    JAVA语言具有跨平台,unicode字符集编码的特点. 但是在开发过程中处理数据时涉及到的字符编码问题零零散散,尤其是处理中文字符时一不留神就可能出现一堆奇奇怪怪的符号,俗称乱码. 对于乱码,究其原 ...

  8. 用一天的时间学习Java EE中的SSH框架

    首先说明一下,本人目前主要从事.NET领域的工作,但对于C++.Java.OC等语言也略知一二,周末闲来无事,特花费一天的时间学习了一下Java中的SSH框架,希望把学习过程中的心得体会与园友们进行分 ...

  9. Java开发中常见的危险信号(上)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

随机推荐

  1. [CentOS 7]挂载ntfs格式U盘

    在我们将U盘插入装有CentOS的系统时,经常会出现如图所示的错误提示.这是因为linux系统并不能兼容NTFS的文件系统.其解决方法如下(建议先进入root模式): 1.首先下载"ntfs ...

  2. eclipse .project文件 .classpath文件的作用

    .classpath文件的作用 可以参考.classpath文件的作用 .project文件的作用 确保你自己的eclipse能创建Java项目,并且正确编译运行helloworld,给eclipse ...

  3. 版本控制工具 GIT入门教程

    GIT 在团队中的中作流程 1.每个程序员在自己的分支上进行开发 2.主程序猿/Leader合并程序员程序 3.程序员之间也可以对一下提交冲突进行合并 下载和安装 GIT官方网址:http:// gi ...

  4. netty--helloword程序

    1.使用netty需要使用到下面的java包 netty-all-5.0.0.Alpha2.jar 我们来看下面具体的代码 1. 创建一个ServerBootstrap实例 2. 创建一个EventL ...

  5. Python 简明教程 --- 15,Python 函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误. -- Edsger Dijkstra 目录 本节我 ...

  6. 设计模式系列之代理模式(Proxy Pattern)——对象的间接访问

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...

  7. 如何去除List集合中重复的元素

    1.通过循环进行删除 public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ...

  8. 浅谈dfs

    搜索(dfs) 搜索分为bfs与dfs 他们的算法思路都是相同的--穷举 可以说,搜索是万能的,但是复杂度往往是指数级的,往往是穷途末路才用的最后方案 dfs dfs核心操作:回溯+前进 想想你第一次 ...

  9. Feign拦截器应用 (F版)

    Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态).使用Sprin ...

  10. Netty 源码解析(七): NioEventLoop 工作流程

    原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第七篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源 ...