2021.5.6:断言Assertion

说明

断言(Assertion是一种调试程序的方式。在Java中,使用assert关键字来实现断言。

例子

public static void main(String[] args) {
        double x = Math.abs(-123.45);
        assert x >= 0;
        System.out.println(x);
    }

语句assert x>=0;即为断言,

  • 断言条件x>=0预期为true
  • 如果计算结果为false,则断言失败,抛出AssertionError

使用assert语句时,还可以添加一个可选的断言消息

        assert x >= 0 : "x must >= 0";

这样,当断言失败的时候,AssertionError会带上消息x must >= 0,更加便于调试。

Java断言的特点是:断言失败时会抛出AssertionError,导致程序退出结束。因此,断言不能用于可恢复的程序错误,只应该用于开发和测试阶段。

对于可恢复的程序错误,不应该使用断言,而应该用throw主动抛出异常并在上层捕获。

不过JVM默认关闭断言,如果要开启,需要给JVM传递参数-enableassertions(简写为-ea)来启用断言。

还可以有选择地对特定的类启用断言,命令行参数为:-ea:com.itranswarp.sample.Main表示只对com.itranswarp.sample.Main这个类启用断言。如果要对特定的启用断言,命令行参数为:-ea:com.itranswarp.sample...(注意结尾的3个.),表示对com.itranswarp.sample这个包启动断言。

实际应用中,很少使用断言。更好的方法是编写单元测试,后续的JUnit节中将会学到。

 

posted @ 2021-05-06 20:37  ShineLe  阅读(281)  评论(0)    收藏  举报