Java违例差错控制

作者: 酥酥肉 | 来源:发表于2018-12-25 20:58 被阅读0次

    Java违例差错控制

    Java 的基本原理就是“形式错误的代码不会运行”。
    捕获错误最理想的是在编译期间,最好在试图运行程序以前。然而,并非所有错误都能在编译期间侦测到。有些问题必须在运行期间解决
    “违例”( Exception)这个词表达的是一种“例外”情况,亦即正常情况之外的一种“异常”

    基本违例

    “违例条件”表示在出现什么问题的时候应中止方法或作用域的继续,为了将违例条件与普通问题区分开,
    违例条件是非常重要的一个因素

    将与错误有关的信息发送到一个更大的场景中,方法是创建一个特殊的对象
    用它代表我们的信息,并将其“掷”( Throw)出我们当前的
    场景之外。这就叫作“产生一个违例”或者“掷出一个违例”
    if(t == null)
    throw new NullPointerException();
    这样便“掷”出了一个违例。

    违例创建

    和 Java 的其他任何对象一样,需要用 new 在内存堆里创建违例,并需调用一个构建器
    在所有标准违例中,
    存在着两个构建器:第一个是默认构建器,第二个则需使用一个字串自变量,使我们能在违例里置入相关信息:
    if(t == null)
    throw new NullPointerException("t = null");
    它首先执行 new 表达式,创建一个不在程序常规执行范围之内的对象。
    随后,对象实际会从方法中返回—— 尽管对象的类型通常并不是方法设计为返回的类型。可将其想象成另一种返回机制

    违例的捕获

    若某个方法产生一个违例,必须保证该违例能被捕获,并获得正确对待。
    它的一个好处就是允许我们在一个地方把问题抛出,然后在另一个地方对待来自那个代码内部的错误。
    为理解违例是如何捕获的,首先必须掌握“警戒区”的概念

    1、 t r y 块
    若位于一个方法内部,并“掷”出一个违例
    try 块属于一种普通的作用域,用一个 try 关键字开头

    2、 违例控制器
    catch(捕获)关键字标记,
    try {
    // Code that might generate exceptions
    } catch(Type1 id1) {
    // Handle exceptions of Type1
    } catch(Type2 id2) {
    // Handle exceptions of Type2
    } catch(Type3 id3) {
    // Handle exceptions of Type3
    }

    捕获违例后,处理方式

    1、“中断”,假定错误非常关键,没有办法返回违例发生的地方。无论谁只要“掷”出一个违例,就表明没有办法补救错误,而且也不希望再回来

    2、“恢复”,它意味着违例控制器有责任来纠正当前的状况,然后取得出错的方法,假定下一次会成功执行。若使用恢复,意味着在违例得到控制以后仍然想继续执行
    尽管“恢复”表面上十分不错,但在实际应用中却显得困难重重。其中决定性的原因可能是:
    我们的控制模块必须随时留意是否产生了违例,以及是否包含了由产生位置专用的代码。这便使代码很
    难编写和维护—— 大型系统尤其如此,因为违例可能在多个位置产生。

    相关文章

      网友评论

        本文标题:Java违例差错控制

        本文链接:https://www.haomeiwen.com/subject/exuqlqtx.html