断言
assert 条件;
assert 条件:表达式;
条件为false
,抛出AssertionError
。第二种形式会将其内容传入AssertionError
构造器,作为原因。
ClassLoader
包含了开启断言的方法
启用
断言默认被禁用,通过-ea
或-enableassertions
启用:
全局启用
java -ea TestClass
在某个类或包(包名后面跟三个点)中启用
java -ea:MyClass -ea:com.cc.dd...
断言在编译后存在于字节码文件中,仅需启用即可。禁用时,类加载器跳过断言语句,不降低程序性能。
禁用
-da
或-disableassertions
启用或禁用断言是类加载器的功能。有些类不是由类加载器加载的,而是由虚拟机加载。
系统类需要用-enablesystemmassertions/-esa
启用断言
断言抛出的是Error
的子类实例,属于致命错误。只用于开发测试