廖雪峰Java3异常处理-2断言和日志-1使用断言
1.断言
断言Assertion是一种程序调试方式
- 使用assert关键字
- 断言条件预期为true
- 如果断言失败,抛出AssertionError,停止程序
- 可选的断言消息,断言失败,就会抛出
public class Main {
static double abs(double d){
return d >= 0 ? d : -d;
}
public static void main(String[] args){
double x = abs(-123.45);
assert x <= 0 : "x must greater than 0";
System.out.println(x);
}
}
# 2.断言的特点:
* 断言失败时会抛出AssertionError,导致程序结束退出
* 不能用于可恢复的程序错误
* 只应该用于开发和测试阶段
* 如果我们认为一个程序是可恢复的,就不应该使用断言。 如不能用断言判断一个变量是否为空,而应该用抛出异常,在上层捕获这个异常。
3.JVM默认关闭断言指令的,IDE使用断言
- 给Java虚拟机传递-ea参数启用断言
- 可以指定特定的类启用断言 -ea:com.feiyangedu.sample.Main
- 可以指定特定的包启用断言 -ea:com.feiyangedu...
IDEA: run - Edit Configurations,在VM options中加入-ea即可
eclipse: Run As-Run Configurations-Arguments-VM arguments填入-ea:com.testAssertion.Main
4.总结
- 断言是一种调试方式,断言失败会抛出AssertionError
- 只能在开发和测试阶段启用断言
- 对可恢复的错误不能使用断言,而应该抛出异常
- 断言很少被使用,更好的方法是编写单元测试