java异常Exception
概念
程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止
分类
非检查性异常
Error 和 RuntimeException 以及他们的子类。Java语言在编译时,不会提示和发现这样的异常,不要求在程序中处理这些异常。所以我们可以在程序中编写代码来处理(使用try…catch…finally)这样的异常,也可以不做任何处理。对于这些错误或异常,我们应该修正代码,而不是去通过异常处理器处理。这样的异常发生的原因多半是由于我们的代码逻辑出现了问题。
例如:
- 当程序中用数字除以0时,就会抛出ArithmeticException异常;
- 在类型转换时,错误的强制类型转换会抛出ClassCastException类型转换异常;
- 当使用集合进行数组索引越界时就会抛出ArrayIndexOutOfBoundsException异常;
- 当程序中使用了空对象进行操作时就会抛出注明的空指针NullPointerException异常等。
检查性异常
除了Error 和 RuntimeException的其它异常。Java语言强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。如SQLException,IOException,ClassNotFoundException 等。
检查性异常就是指,编译器在编译期间要求必须得到处理的那些异常,你必须在编译期处理了。
执行流程
处理
流程
1.程序中预先设置好对付异常的处理办法
2.程序开始运行
3.出现异常
4.对异常进行处理
5.处理完毕,继续执行下面的代码
实现
关键字 | 作用 |
---|---|
try | 捕获异常,执行可能产生的异常代码。 |
catch | 捕获异常。 |
finally | 无论是否发生异常,finally内的代码都会执行。 |
throw | 声明异常,声明方法中可能抛出的各种异常。 |
thros | 手动抛出异常。 |
try{
//可能出现异常的代码,代码量尽量缩小
}catch(上面异常代码的异常类型){//当try出现异常时,执行catch
//处理异常的方式
}finally{
//必须执行的代码
}
自定义
项目中创建通用异常处理类和通用异常处理类和通用异常处理类配合使用