Java中断言的用法

简单描述下断言的用法

第一步:定义一个断言,如:

int number=-28; assert (number>0):"负数不能计算平方根";//此断言是假的,所以会输出后面内容,之后会报错

第二步:在断言的类中右击选择“Run As”,之后选择” Run Configuration“;

第三步:选择 Arguments 选项卡;
第四步:在 VM arguments 文本框中输入” -ea“来运行断言;

输出结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-11
JDK1.4中引入的一个新特性之一就是断言(assert),为程序的调试提供了强有力的支持,以下的文档根据SUNTEC内容及相关内容组成。

  源代码:

/**
* Simple examples of the use of the new assertion feature in JDK1.4
*
* @author S.Ritter 16/7/2001
**/

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) {
/* Ignore */
}
}
System.out.println("Testing assertion that x == 10");
assert x == 10:"Our assertion failed";
System.out.println("Test passed");
}

}

  由于引入了一个新的要害字,所以在编译的时候就需要增加额外的参数,要编译成功,必须使用JDK1.4的Javac并加上参数'-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并终止程序的运行。

  由于程序员的问题,断言的使用可能会带来副作用,例如:

  boolean isEnable=false;
  //...
  assert isEnable=true;

  这个断言的副作用是因为它修改程序变量的值并且没有抛出错误,这样的错误假如不细心检查很难发现。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它测试是否将断言打开了。

/**
* Simple examples test enable assertion feature in JDK1.4
*
* @author Cherami 25/4/2002
**/

public class AssertExample2 {

public static void main(String[] args) {
boolean assertEnable=false;
assert assertEnable=true;
if (assertEnable==false){
throw new RuntimeException("Assertions should be enable");
}
}

}

  假如我们不使用-ea参数运行上面的程序,则控制台将输出:

  Exception in thread "main" java.lang.RuntimeException:
  Assertions should be enab
  le
  at AssertExample.main(AssertExample.java:14)本回答被网友采纳
第2个回答  2013-08-11
假定某一段的正确或者错误
相似回答