zoukankan      html  css  js  c++  java
  • 第十二章 通过异常处理错误

    异常情形是指阻止当前方法或作用域继续执行的问题。当抛出异常后,有几件事会随之发生。首先,同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.异常匹配:

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

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

  • 相关阅读:
    人脸识别经典算法三:Fisherface(LDA)
    人脸识别经典算法二:LBP方法
    特征脸(Eigenface)理论基础-PCA(主成分分析法)
    人脸识别经典算法一:特征脸方法(Eigenface)
    文本特征词提取算法
    浏览器假死,浏览器堵塞,浏览器卡的原因
    Java世界里的四大名著(Java程序员必看书籍)
    mySQL中LEN()与DATALENGTH()的区别
    postMan测试https接口
    BigDecimal用法
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/12288462.html
Copyright © 2011-2022 走看看