Java异常总结
1、什么是异常
异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误。所有的异常都属于Throwable类,Throwable类又分为Exception类和Error类,下面介绍的异常都属于Exception类。
2、异常的分类
编译期异常(Exception除RuntimeException以外的直接子类):可以通过java编译检测出来的,并且需要coder处理的异常。
运行时异常(RuntimeException的子类):在编译期无法确定的异常,只有程序真正运作起来才能确定是否有错误。
3、常见异常
1)算术异常类:ArithmeticExecption
2)空指针异常类:NullPointerException
3) 数组下标越界异常:ArrayIndexOutOfBoundsException
4) 文件未找到异常:FileNotFoundException
5)方法未找到异常:NoSuchMethodException
4、异常处理(try catch finally throw throws)
积极处理:
主要是使用try…catch.程序先执行try中的语句,当出现异常时,停止当前的执行,转入到catch中执行语句(一个catch块只能处理一种异常类)。
一个try块对应一个或多个catch块,只有一个finally块
消极处理:
是指用throw和throws来实现。
1) try ( try块尽量避免嵌套)
try语句指定一段代码,在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常,try后面的catch语句要分别对这些异常进行处理
注意:如果当前try块中存在多条可能会发生异常的代码A,B C 三条语句如果A发生异常,此时B,C语句不会被执行到。
2)catch(尽量避免过细划分异常)
catch语句中是对异常进行处理的代码
catch(NullPointerException){
//先用关心的子类处理,不关心的直接用父类处理
}catch(Exception e){ }
3)finally(无论是否发生异常必定会被执行到 )
finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分前,能够对程序状态做统一的管理。
TODO:
1)如果try块里面包含return:并且finally中也包含return;
问:此时从哪里退出
答:从finally 块return退出
2)如果try块里面含有退出System.exit(); finally 也含有
问:此时从哪里退出
答:从try块中System.exit退出
4)throw 和 throws
throw
在Java程序执行过程中,如果出现了异常事件,就会生成一个异常对象,生成的异常对象将会传递给Java运行时系统,这一异常产生和提交过程称为抛出异常(throw)。
throws
一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫声明抛出异常(throws)。
在方法中,抛出异常对象是使用throw语句完成的。