assert描述
- java断言assert是jdk1.4引入的。
- jvm断言默认是关闭的。
-断言可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”。 - 断言只适用复杂的调式过程。
-断言一般用于程序执行结构的判断,千万不要让断言处理业务流程。
assert使用
方式一:
示例
/**
* 断言的使用方法一
*/
public static void useAssertExt1() {
boolean isOk = 1 > 2;
assert isOk;
System.out.println("程序正常");
}
结果:
Exception in thread "main" java.lang.AssertionError
at com.rollercoaster.codecomplete.AboutAssertion.useAssertExt1(AboutAssertion.java:43)
at com.rollercoaster.codecomplete.AboutAssertion.main(AboutAssertion.java:16)
说明:
isOk为false,抛出AssertionError
方式二:
示例
public static void useAssertExt2() {
boolean isOk = 1 > 2;
try {
assert isOk : "程序错误";
System.out.println("程序正常");
} catch (AssertionError err) {
System.out.println(err.getMessage());
}
}
运行结果
程序错误
说明
assert后面跟个冒号表达式。如果冒烟前为true,则冒号后面的被忽略,否则抛出AssertionError,错误内容为冒号后面的内容。
AssertionError是继承自Error,而不是Exception,所以catch部分用Exception是不能捕捉到AssertionError信息的。