Java异常、断言和日志——使用断言

1.断言的概念:

    在程序中含有大量的异常检查,程序运行起来相当慢

    断言机制允许在测试期间代码中插入一些检查语句。当代码发布时,这些插入的检测语句将会被自动的移走

    断言的关键字是assert,这个关键字有两种形式:

    assert 条件:

    和

    assert 条件:表达式

    这两种形式都会对条件进行检测,如果结果为false,则抛出一个AssertionError异常。在第二种形式中,表达式将传入AssertionError的构造器,并转换为一个消息字符串

    表达式部分的唯一目的是产生一个消息字符串

2.启用和禁用断言:

    在默认情况下,断言被禁用。可以在程序运行时-enableassertions或-ea选项启用:

    java -enableassertions MyApp

    在启用或禁用断言时不必重新编译。启用或禁用断言是类加载器的功能。当断言被禁用时,类加载器将跳过断言代码,因此,不会降低程序运行的速度

    也可以用选项-disableassertions或-da禁用某个特定类或包的断言:

    java -ea:... -da:MyClass MyApp

    对于系统类来说,需要使用-enablesystemassertions/-esa开关启用断言

3.使用断言完成参数检查:

    什么时候应该选择使用断言呢?请记住下面几点:

    1)断言失败是致命的、不可恢复的错误

    2)断言检查只用于开发和测试阶段

4.java.lang.ClassLoader 1.0:

    void setDefaultAssertionStatus(boolean b) 1.4

    对于通过类加载器加载的所有类来说,如果没有显式地说明类或包的断言状态,就启用或禁用断言

    void setClassAssertionStatus(String className,boolean b) 1.4

    对于给定的类和它的内部类,启用或禁用断言

    void setPackageAssertionStatus(String packageName,boolean b) 1.4

    对于给定包和其子包中的所有类,启用或禁用断言

    void clearAssertionStatus() 1.4

    移去所有类和包的显式断言状态设置,并禁用所有通过这个类加载器加载的类的断言

猜你喜欢

转载自blog.csdn.net/qq_38386085/article/details/80890918