异常
Java 中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流。
异常的分类
Exception又分为两大类:
运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生。
非运行时异常是指 RuntimeException以外的异常,类型上都属于Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException、ClassNotFoundException等以及用户自定义的Exception 异常
/**
* 捕获异常
* Java异常处理通过5个关键字控制:try,catch,throw,throws和finally,
* 捕获异常使用try…catch语句,把可能发生异常的代码放到try {…}中,
* 然后使用catch捕获对应的Exception及其子类:
*/
try {
//要监控是否有异常的代码
//代码A
//代码B
}catch (ExceptionType e1){
//对异常1进行处理
}catch (ExceptionType e2){
//对异常2进行处理
}finally {
//无论是否发生异常都会执行该代码块
}
捕获异常-嵌套try-catch
抛出异常-throw throws
throw是显示的抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出特定类型的异常
throws是方法可能抛出异常的声明,用在声明方法时,表示该方法可能抛出异常,然后交给上层调用它的方法处理
区别
throw出现在方法体,throws出现在方法头
throw是抛出了异常,执行throw则一定是抛出了某种异常,throws是表示出现异常的一种可能性,并不一定会抛出这些异常