廖雪峰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
  • 只能在开发和测试阶段启用断言
  • 对可恢复的错误不能使用断言,而应该抛出异常
  • 断言很少被使用,更好的方法是编写单元测试

猜你喜欢

转载自www.cnblogs.com/csj2018/p/10335639.html