异常以类和对象的形式存在,异常可以增加代码的健壮性,发生异常JVM会创建对象所有异常都是在运行阶段发生
继承结构
处理异常的方式:1.throws
2.try{异常}catch(数据类型 e){捕获异常的分支} e为new异常对象的地址
关键字 | 作用 |
try | 用于封装可能出现异常的代码段 |
catch | 捕获异常区域,如果被封装到try中的代码出现异常,程序会跳到catch区域,并且在catch区域中得到异常信息 |
throw | 抛出异常到其调用者 |
throws | 抛出异常,用于声明当前方法可能会出现异常,但是方法体内并没有处理异常的机制,如果需要使用该方法,需要调用者处理可能出现的异常信息 |
finally | 即使程序出现异常,仍然会执行的代码段 |
RuntimeException | 所有运行期异常的父类 |
ArithmeticException | 算数异常(除数为0) |
ArrayIndexOutOfBoundsException | 数组下标越界 |
NullPointerException | 空指针异常 |
ClassCastException | 数据类型转换异常 |
NegativeArraySzieExcption | 数组长度为负数 |
NumberFormatException | 数据类型转换异常 |
CloneNotSupportedException | 不支持克隆 |
IOException | IO异常 |
FileNOtFoundException | 未见路径为找到异常 |
SQLException | 数据库相关异常 |
InterruptedException | 线程中断 |
ClassNotFoundException | 不能加载请求类 |
InstantiationException | 实例化异常 |
IllegalAccessException | 非法访问限定修饰词 |
NoSuchMethodException | 请求的方法不存在 |
在try、catch、finally中都出现return语句该如何执行?
根据代码执行是否成功决定是否执行try、catch的return语句,之后在执行finally中的return语句,如果return语句后面的是表达式,返回的就是表达式的结果,对于try、catch中的return的结果会直接抛弃,然后在返回finally中的return语句,所以在finally语句中尽量避免书写return语句
final、finally、finalize的区别:
final是一个关键字表示最终不变的
finally也是一个关键字和try联合使用在异常处理中finally中的代码一定会执行
finalize是一个Object类的方法作为方法名出现是标识符