1.异常:
在程序运行时,发生了一些错误导致程序不能正常结束或者中断
2.异常导致的后果
Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息,并将其被提交给Java运行时系统,这个过程称为抛出异常,不处理的话会直接导致程序中断。
3. 异常的分类
(1)分类根据继承关系:
Throwable(Java语言中所有错误或异常的超类)
Throwable下面有两个直接子类:
a. Error:系统性的相关问题,如jvm
b. Exception:程序相关问题
Exception的子类之一:RuntimeException(运行时异常)
(2)根据是否必须处理分类
a. 受查异常:在编译阶段必须处理掉的错误
Exception本身
Exception除了RuntimeException以外的所有子类
这些异常,跟程序相关,但通常是外界因素造成的,比如你要访问一个文件,第一次访问了,第二次访问的时候被人删除了,你就找不到文件链接
b. 非受查异常:编译时不报错,运行时报错,即不需要通过异常机制处理就可以编译通过
Error:无能为力
RuntimeException及其子类:通常是由于自己代码的问题,应该调整代码,如空指针、数组越界
4. 处理异常的方式
五个关键字:try-catch-final-throws-throw
(1) 捕获:try-catch
try{
放的是一些可能会出现错误的代码
}catch(捕获到的异常){
当你捕获之后执行的代码
}finally{
不管怎么样都会执行的代码
}
(2) 抛出:throws、throw
在当前方法中不处理异常,让调用者处理。
调用者可以继续抛出或者处理掉
5.产生异常的两种方式
(1)程序自行判断
(2)程序员自己抛出的,通过throw 异常对象
6.补充
(1).自定义异常,继承与Eexception
(2)Exception的子类:
IOException
FileNotFindException 文件没有找到异常
RuntimeException(运行时异常)
NullPointerException 空指针异常
ArraysOutOfBoundsException 数组越界
ArithMeticException 数学异常
InrerRuptedException
(3).在抛出多个异常的时候
3.在try-catch 多个异常的时候,代码是不是有一定的要求
a)父类的异常后捕获,子类的异常先捕获
b.处理多个异常