一.异常在是什么
在java中,将程序执行过程中发生的不正常行为成为异常,在我们之前写过的代码中经常遇到的异常比如:空指针异常,数组越界异常,算数异常.
二.异常的体系结构
从图中可以看出Throwable派生出两个子类:Exception和Error.
很多人可能会产生疑问这两个有什么区别呢?
在程序中:Error是java虚拟机无法解决的严重性问题,我们常见到的就是jvm的内部错误,资源耗尽等错误.这主要是程序员的逻辑问题造成的,一旦发生就无力回天.
Exception是异常产生后程序员可以通过代码进行处理,程序继续执行.
三.异常的分类
1.编译时异常:在编译时发生的异常,称之为编译时异常,也称为受检查异常
此时编译器已经报出错误.
2.运行时异常:在程序运行期间发生的异常,也称为非受查异常.RunTimeException以及其子类对应的异常都成为运行时异常
注意:程序中关键字拼写错误不属于异常,而是一种语法错误.
四.异常的捕捉(throws,try-catch,finally)
1.异常声明throws
在方法声明时参数列表之后,当方法中抛出异常时,用户不想处理该异常,此时就可以用throws将异常抛给方法的调用者来处理.当前方法不处理此异常,提醒方法的调用者来处理此异常.
2.使用try-catch进行捕捉和处理
基本语法:
try {
// 可能出现异常的代码块
} catch (Exception e) {
// 对Exception的处理,可以打印异常,也可以做一些别的事情
}finally {
// 无论成功与否都会执行的代码块,一般用于资源的释放
}
注意:如果catch捕捉到了try抛出的异常,正常处理了就会跳出try-catch结构,进而执行后面的代码
还有就是如果Exception写在了前面,后面继承Exception的子类就不会执行,如果要写就要写在后面.
如果非要写Exception就写在最后面.
try-catch注意事项:
1.try块内抛出异常之后不会被执行了
2.如果抛出的异常类型与catch时异常类不匹配,异常就不会捕捉成功,也不会被处理,如果还一直抛异常,就会被JVM处理掉
3.try可能抛出多个不同的异常对象,则必须使用多个catch来捕获
3.finally的使用
在程序中,有些特定的代码是否发生异常,都需要被执行,此时就需要finally来解决这个问题.
finally最大的用处就是用于资源的释放
以上就是我对异常的理解,如有错误望大家指出.