理解和正确使用Java中的断言(assert)

  断言(assert)作为一种软件调试的方法,提供了一种在代码中进行正确性检查的机制,目前很多开发语言都支持这种机制。

  断言是为了方便调试程序,并不是发布程序的组成部分。理解这一点是很关键的。
默认情况下,JVM是关闭断言的。因此如果想使用断言调试程序,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableassertions或者-da关闭断言(默认情况,可有可无)。

  1. Run -> Run Configurations -> Arguments页签 -> VM arguments文本框中加上断言开启的标志:-enableassertions 或者-ea 就可以了
  2. 在myEclipse中,Windows -> Preferences ->Java ->Installed JREs ->点击正使用的JDK ->Edit ->Default VM Arguments文本框中输入:-ea

  断言的使用:
断言是通过关键字assert来定义的,一般的,它有两种形式。

1. assert <bool expression>;       比如     boolean isStudent = false; assert isStudent;
2. assert <bool expression> : <message>;    比如  boolean isSafe = false;  assert isSafe : "Not Safe at all";

第一种形式:

public class AssertionTest {  

    public static void main(String[] args) {  

        boolean isSafe = false;  
        assert isSafe;  
        System.out.println("断言通过!");  
    }  
}  

输出结果:

Exception in thread “main” java.lang.AssertionError
at AssertionTest.main(AssertionTest.java:8)

第二种形式:

public class AssertionTest {  

    public static void main(String[] args) {  

        boolean isSafe = false;  
        assert isSafe : "Not safe at all";  
        System.out.println("断言通过!");  
    }  
}  

输出结果:

Exception in thread “main” java.lang.AssertionError: Not safe at all
at AssertionTest.main(AssertionTest.java:7)

第二种形式和第一种的区别在于后者可以指定错误信息。

文章目录