Java异常
1.异常体系结构
-
error
由虚拟机生成并抛出,大多数错误于代码编写者无关
-
Exception
-
ArrayIndexOutOfBoundsException(运行时异常)
-
NullPointerException(空指针异常)
-
ArithmeticException(算数异常)
-
MissingResourceException(丢失资源)
-
ClassNotFoundException(找不到类)
这些异常是不检查异常程序可以选择捕获处理也可以不处理
-
Error和Exception的区别:Error通常是灾难性的致命错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。
-
2.异常处理机制
1. 抛出异常,捕获异常
-
try:监控区域
-
catch:捕获异常,括号里面输入想要捕获的异常类型,大括号里可以写一些代码块来改变
e.printStackTrace():打印错误栈的信息
-
finally:处理善后工作,可以关闭IO、资源流。
-
最高能够捕获到的异常为Throwable
-
如果要捕获多个异常要从小到大来捕获T
-
Ctrl+Alt+T:可以快速写try-catch结构
-
throw:主动抛出异常,一般在方法中(方法体内)使用
-
throws:在方法上抛出异常
3.自定义异常
-
创建自定义异常
-
在方法中通过throw关键字抛出异常对象
-
如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否者在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
-
在出现异常方法的调用者中捕获并处理异常
public class MyException extends Exception{ private int detail; } public MyException(int a){ this.detail=a; } @Override pubilc String toString(){ return "MyException{"+detail+'}'; }