java的断言(Assert)

1. 断言(Assert  [?‘s?tvt. 维护,坚持;断言;主张;声称)

    作用:其实就是用来调试程序的,不过目测使用的很少。

    先来看两个例子,然后再来解释:

    1.1. 先定义一个 TestAssert类

技术分享
 1 public class TestAssert{
 2     public static void main(String[] args){
 3         TestAssert ta = new TestAssert();
 4         ta.Test(-99);
 5     }
 6     
 7     public void Test(int age){
 8        //assert关键字,再加一个布尔表达式,但表达式结果为false时,程序就会退出
 9        //并抛出一个AssertionError,所以断言是error级别的
10         assert age>=0;//满足条件则继续运行
11         System.out.println("继续执行,输入的年龄是:"+age);
12     }
13 }
View Code

        首先编译 javac TestAssert.java

        然后正常执行: java TestAssert,结果是:

       技术分享

         启动断言, java -ea TestAssert ,结果是:

       技术分享

         或者使用 java -enableassertions TestAssert,结果是一样的:

       技术分享

        可以看到,抛出的类型是 java.lang.AssertionError

      至于显式关闭断言的命令就不测试了,个人感觉那是脱裤子放屁的事,有兴趣的可以自己测试一下。

    1.2. 断言 后面附带信息的例子:

         还是使用上面的类 TestAssert,稍作修改:

技术分享
 1 public class TestAssert{
 2     public static void main(String[] args){
 3         TestAssert ta = new TestAssert();
 4         ta.Test(-99);
 5     }
 6     
 7     public void Test(int age){
 8        //assert关键字,再加一个布尔表达式,但表达式结果为false时,程序就会退出
 9        //并抛出一个AssertionError,所以断言是error级别的
10         assert age>=0:"不能输入这种不合理的年龄啊";//满足条件则继续运行
11         System.out.println("继续执行,输入的年龄是:"+age);
12     }
13 }
View Code

        首先编译 javac TestAssert.java

        然后正常执行: java TestAssert,结果是:

       技术分享

              因为默认没开启断言,所以结果还是跟上面一样,

         启动断言, java -ea TestAssert ,结果是:

       技术分享

              很明显,结果中输出了我们刚刚写的字符串,这样可以增强可读性

         或者使用 java -enableassertions TestAssert,结果是一样的:

       技术分享

2. 使用方法,(需要使用命令行)

   2.1. 开启断言功能(默认是关闭的)

               java -ea TestAssert   ----(ea就是enableassertions的缩写)

       或者:java -enableassertions TestAssert

   2.2. 关闭(虽然默认是关闭的,但你也可以显示去关闭它,其实这个参数根本没有,哈哈)

               java -da TestAssert

       或者:java -disableassertions TestAssert 

 

3. 断言的使用格式:

    3.1. 普通格式 assert 布尔表达式;

           eg: int a = 0;

                assert a>100;

    3.2. 增强格式 assert 布尔表达式:"字符串";

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。