ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 第八章异常喝断言 五、(1)

第八章异常喝断言 五、(1)

原创 Linux操作系统 作者:今天天气好晴朗 时间:2012-02-08 11:26:46 0 删除 编辑

五、断言和断言的使用                                             

1.断言                                                                               

       断言用于证明和测试程序的假设,比如“这里的值大于5”。

    断言可以在运行时从代码中完全删除,所以对代码的运行速度没有影响。

 

2.断言的使用                                                                         

       断言有两种方法:

       一种是assert<<布尔表达式>>;另一种是assert<<布尔表达式>><<细节描述>>

       如果布尔表达式的值为false,将抛出AssertionError异常;细节描述是AssertionError异常的描述文本

       使用javac –source 1.4 MyClass.java的方式进行编译

       示例如下:

public class AssertExample {

  public static void main(String[] args) {

int x = 10;

if (args.length > 0) {

  try {

    x = Integer.parseInt(args[0]);

  } catch (NumberFormatException nfe) {

   
      }

}

System.out.println("Testing assertion that x == 10");

assert x == 10:"Our assertion failed";

System.out.println("Test passed");

}

}

 

由于引入了一个新的关键字,所以在编译的时候就需要增加额外的参数,要编译成功,必须使用JDK1.4javac并加上参数'-source 1.4',例如可以使用以下的命令编译上面的代码:

??javac -source 1.4 AssertExample.java

  

以上程序运行使用断言功能也需要使用额外的参数(并且需要一个数字的命令行参数),例如:

??java -ea AssertExample 1

 

程序的输出为:

??Testing assertion that x == 10

Exception in thread "main" java.lang.AssertionError:

Our assertion failed

at AssertExample.main(AssertExample.java:20)

  

由于输入的参数不等于10,因此断言功能使得程序运行时抛出断言错误,注意是错误,这意味着程序发生严重错误并且将强制退出。断言使用boolean值,如果其值不为true则抛出AssertionError并终止程序的运行。

 

3.断言推荐使用方法                                                                   

       用于验证方法中的内部逻辑,包括:

              -内在不变式

              -控制流程不变式

              -后置条件和类不变式

       注意:不推荐用于公有方法内的前置条件的检查

 

4.运行时屏蔽断言                                                                     

       运行时要屏蔽断言,可以用如下方法:

java disableassertions  java da

 

运行时要允许断言,可以用如下方法:

java –enableassertions    java –ea

 

Java私塾跟我学系列——JAVA  网址:http://www.javass.cn  电话:010-68434236 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26660100/viewspace-715821/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-02

  • 博文量
    65
  • 访问量
    43018