第六章:异常处理。
一.异常的概念:概念程序执行过程中,出现非正常的情况,最终会导致JVM的非正常停止。
二.异常的继承体系:
三.异常的类型:
(1)Error:Error类是Throwable的一个子类,代表错误。该体系描述了Java运行系统中的内部错误及资源耗尽的情形,该错误是由java虚拟机抛出的,如果发生,除了尽力使程序安全退出外,在其他方面是无能为力的。
(2)Exception:Exception类是Throwable的另一个重要子类,它规定的异常是程序自身可以处理的异常。
*注:异常和错误的区别在于异常是可以被处理的,而错误是不能够被处理的。
(3)常见异常:RuntimeException(运行时异常)、CheckedException(非运行时异常/可检查异常)、ArithmecticException(算术异常)、NullPointerException(空指针异常)、ClassCastException(类型转换异常)、IndexOutOfBoundsException(越界异常)、IllegalArgumentException(非法产数异常)、ArryStoreException(叔祖储存异常)、BufferOverflowException(缓冲区溢出异常)。
四.异常的处理
(1)使用try—catch—finally处理异常,格式如下:
try{
}catch(异常类型 e){
}finally{
}
其中try中的”程序代码块“指的是可能产生异常的代码块;catch中的”对捕获的异常经行处理“作用是,捕获并处理与catch中定义的异常里类型相匹配的异常对象e,catch可以有多个,每个catch块可以处理相应的异常类型;finally中的代码块是异常处理中最后被执行的代码块,无论程序是否产生异常,finally中的代码块都会执行,实际开发中,finally中常是一些资源释放或对象关闭的代码。
(1)使用throws关键字抛出异常,格式如下
数据类型 方法名(形参列表) throws 异常类1,异常类2,...,异常类n{
方法体
}
该声明表示相应方法不处理异常,而交给方法的调用者经行处理。因此,不管方法是否发生异常,调用者都必须进行异常处理。
(2)使用throw关键字抛出异常,格式如下:
throw new 异常对象();
除了可以通过throws关键字抛出异常,还可以使用throw关键字来实现。与throws不同throw用于方法体内,且抛出的是异常类对象。throws用于方法签名上,可以抛出多种异常。
通过throw关键字抛出异常后,还需要使用throws关键字向方法外抛出,或者使用try-catch进行异常处理。如果throw抛出的是Error、RuntimeException或者他们的子类异常对象,则不用throw关键字向外抛出和try-catch经行处理。
五.自定义异常类:
(1)在程序中使用自定义异常类的步骤:
1.创建自定义异常类并继承Exception基类。如果自定义Runtime类,则继承RuntimeException基类。
2.在方法中使用throw关键字抛出异常对象。
3.如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常。
4.在调用可能会出现异常方法的语句处进行捕获并处理异常。