一、异常处理机制
1.try…catch处理异常过程
程序执行try代码块的内容,当遇到异常时,系统会自动创建一个异常对象,并将该对象交给Java运行时环境,即抛异常(throw);当Java运行时环境接收到异常对象时,会寻找能够处理这个异常的catch块(判断该异常对象是否是该catch块后异常类或其子类的实例),如果找到,则交给该catch块处理,即捕获异常;如果没有找到合适的catch块,则程序会异常终止。
2.异常的分类
1)Checked异常和Runtime异常:
除了Runtime异常及其子类其他的异常都是Checked异常;Checked异常是能够被处理的异常,必须显式的处理它,如果不处理,编译时会出错;处理Checked异常可以try…catch也可以throws。
Runtime异常无需显式的捕获程序也可运行,如果想要处理,添加try…catch即可。
2)常见的异常:
NullPointerException空指针异常
IllegalArgumentException传递非法参数异常
IndexOutOfBoundsException下标越界异常
NoSuchMethodException方法为找到异常
SecurityException安全异常
ClassNotFoundException类未找到异常
ClassCastException强制类型转换异常
NumberFormatException数字格式异常
3.Java7提供多异常捕获
捕获多异常时,多个异常之间用|隔开,需要注意的是,多异常的异常变量具有隐式final,因此程序不能对异常变量重新复制。
4.访问异常信息
可以获取异常对象的相关信息
getMessage();返回该异常详细描述字符串
printStackTrace();打印该异常的跟踪栈信息
printStackTrace(PrintStream s);将跟踪栈信息输出到指定的输出流中
getStackTrace();返回该异常大的跟踪栈信息
5.finally回收资源
try{…}
catch{…}
finally{…}
除非在try…catch块中调用了退出虚拟机的方法(System.exit(1)),否则无论怎样,都会执行finally代码块;通常不要在finally代码块中添加return或throw,这样会导致trycatch中的返回语句失效。
6.Java7的自动关闭资源的try语句
在try后紧跟一对圆括号,括号内声明,初始化多个资源 ,在try结束后会自动关闭这些资源。其中这些资源必须实现AutoCloseable或Closeable接口。
二、自定义抛出异常(继承RuntimeException)
1.自定义异常类
《疯狂Java讲义》之异常处理
最新推荐文章于 2024-09-05 10:39:00 发布