我已经执行了这样的代码:java -ea HelloWorld以及AssertionError显示的其他代码,但对于这个特定的代码,我没有得到任何AssertionError。
public class HelloWorld{
public static void main(String []args){
boolean b=true;
assert(b==true);
b=false;
}
}
答案 0 :(得分:1)
如果您还没有弄清楚Java断言的工作原理:
断言表达式: message_if_not_true
因此,如果您的断言评估为False,则会收到错误消息。
你在做什么:
assert(b == true)
不会导致assertionError,因为b在前一行设置为true。查看Java Oracle文档以获取断言。
答案 1 :(得分:0)
您声明b==true
,它在断言执行时执行。如果断言为假,则抛出AssertionError
。来自Oracle documentation:
每个断言都包含一个你认为会有的布尔表达式 断言执行时为true。如果不是这样,系统会 抛出一个错误。通过验证布尔表达式确实是 确实,断言证实了你对行为的假设 你的计划,增加你对程序免费的信心 错误
它可以以两种不同的方式应用:
断言语句有两种形式。第一个更简单的形式是:
assert
Expression1 ;其中 Expression1 是
boolean
表达式。什么时候 系统运行断言,它评估 Expression1 ,如果是的话false
会抛出AssertionError
但没有详细消息。断言陈述的第二种形式是:
assert
Expression1 : Expression2 ;其中:
- Expression1 是
boolean
表达式。- Expression2 是一个具有值的表达式。 (它不能是对声明为void的方法的调用。)
使用此版本的
assert
语句为AssertionError
提供详细消息。系统将 Expression2 的值传递给相应的AssertionError
构造函数,该构造函数使用值的字符串表示形式作为错误的详细消息。