异常的体系:
Java中异常继承的根类是:Throwable.
Error : 错误的意思,严重错误Error,无法通过处理的错误,一旦出现,程序员无能为力了 只能重启系统,优化项目。比如内存奔溃,JVM本身的奔溃。这个程序员无需理会。 Exception异常的分类:编译时异常和运行时异常。 一、编译时异常:继承自Exception的异常或者其子类,编译阶段就会报错,必须程序员处理的。否则代码编译就不能通过!
/*
方式一:
抛出异常格式:
方法 throws 异常1 , 异常2 , ..{
}
2.建议抛出异常的方式:代表可以抛出一切异常,
方法 throws Exception{
}
小结:
编译时异常编译阶段就报错,必须程序员处理。
方式一:出现异常的地方层层抛出,谁都不处理,最终抛出给虚拟机。
这种方式虽然可以解决编译时异常,但是如果异常真的出现了,程序会直接死亡,所以这种方式并不好!
*/
二、运行时异常: 继承自RuntimeException的异常或者其子类,编译阶段是不会出错的,它是在运行时阶段可能出现,运行时异常可以处理也可以不处理,编译阶段是不会出错的,但是运行阶段可能出现,还是建议提前处理!
常见的运行异常:
1.数组索引越界异常: ArrayIndexOutOfBoundsException。
2.空指针异常 : NullPointerException。直接输出没有问题。但是调用空指针的变量的功能就会报错!
3.类型转换异常:ClassCastException。
4.迭代器遍历没有此元素异常:NoSuchElementException。
5.数学操作异常:ArithmeticException。
6.数字转换异常: NumberFormatException。
finally关键字:用在捕获处理的异常格式中,放在最后面。
finally的作用:finally代码块,其中的代码一定会被执行,可以在代码执行完毕以后进行资源的释放。
try: 1次。 catch:0-N次 (如果有finally那么catch可以没有!!) finally: 0-1次
自定义异常: 自定义异常是程序员自己定义的异常 自定义编译时异常.
a.定义一个异常类继承Exception.
b.重写构造器。
c.在出现异常的地方用throw new 自定义对象抛出! 编译时异常是编译阶段就报错,提醒更加强烈,一定需要处理!
自定义运行时异常.
a.定义一个异常类继承RuntimeException.
b.重写构造器。
c.在出现异常的地方用throw new 自定义对象抛出! 提醒不强烈,编译阶段不报错!!运行时才可能出现!!
异常的作用
1.可以处理代码问题,防止程序出现异常后的死亡。
2.提高了程序的健壮性和安全性。