8. jvm之断言
1. 概念
如果表达式的结果为true,那么断言为真,并且无任何行动;如果表达式为false,则断言失败,则会抛出一个AssertionError对象。
2. 实现
String str = null;
assert str!=null :"此处信息为null";
//代码执行结果
Exception in thread "main" java.lang.AssertionError: 此处信息为null
at TestAssert.main(TestAssert.java:6)
3. 开启方式
assert的支持是可选的,在开发时可以让它运行,但在生产系统中则不需要其运行了(以便提高性能),因此在assert的布尔表达式中不能执行逻辑代码,否则会因为环境不同而产生不同的逻辑,例如:
1 public void doSomething(List list,Object element){
2 assert list.remove(element):"删除元素 " + element + " 失败";
3 /*业务处理*/
4 }
这段代码在assert启用的环境下,没有任何问题,但是一旦投入到生产环境,就不会启用断言了,而这个方法也就彻底完蛋了,list的删除动作永远都不会执行,所以也就永远不会报错或异常,因为根本就没有执行嘛!
Eclipse中默认是关闭断言assert的.怎么样在eclipse中开启断言...