码迷,mamicode.com
首页 > 其他好文 > 详细

第十二章 通过异常处理错误

时间:2020-02-09 20:48:49      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:except   字符串   忽略   理论   回收   释放   包括   完全   处理机   

异常情形是指阻止当前方法或作用域继续执行的问题。当抛出异常后,有几件事会随之发生。首先,同Java中其他对象的创建一样,将使用new在堆上创建异常对象。然后,当前的执行路径被终止,并且从当前环境中弹出对异常对象的引用。此时,异常处理机制接管程序,并开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序,它的任务是将程序从错误状态中恢复,以使7程序能要么换一种方式运行,要么继续运行下去。

 

所有标准异常类都有两个构造器:一个是默认构造器;另一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器:

       throw new NullPointerException(“t=null”);

 

1.捕获异常

要明白异常是如何被捕获的,必须首先理解监控区域的概念:try块,然后对抛出的异常进行处理程序,到某一点进行处理,用关键字catch表示。

异常处理理论上有两种基本模型。Java支持终止模型和恢复模型,程序员倾向于终止模型。

 

2.捕获所有异常

可以只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类Exception,就可以做到这一点:

Catch(Exception e){

 System.out.println(“Caught an exception”);

}

这将捕获所有异常,所以最好把它放在处理程序列表的末尾,以防它抢在其他处理程序之前先把异常捕获了。

 

3.重新抛出异常:

有时希望把刚捕获的异常重新抛出,尤其是在使用Exception捕获所有异常的时候。既然已经得到了对当前异常对象的引用,可以直接把它重新抛出:

重抛异常会把异常抛给上一级环境中的异常处理程序,同一个try块的后续catch子句将被忽略。

 技术图片

4.使用finally进行清理:

对于一些代码,可能会希望无论try块中的异常是否会抛出,它们都能得到执行,此时可使用finally进行执行。对于java而言,因为含有垃圾回收机制所以内存总能得到释放,而可用finally清理的资源包括很多:例如:清理已经打开的文件或网络连接,在屏幕上画的图形等。

 

5.异常匹配:

抛出异常的时候,异常处理系统会按照代码的书写顺序找出“最近”的处理程序。找到匹配的处理程序之后,它就认为异常将得到处理,然后就不再继续查找。

查找的时候并不要求抛出的异常同处理程序所声明的异常完全匹配。派生类的对象也可以匹配其基类的处理程序。

第十二章 通过异常处理错误

标签:except   字符串   忽略   理论   回收   释放   包括   完全   处理机   

原文地址:https://www.cnblogs.com/xiaobaidashu/p/12288462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!