运行时执行的两种情况有什么区别?
private void doStuff() {
assert (y > x);
// more code assuming y is greater than x
}
private void doStuff() {
assert (y > x): "y is " + y + " x is " + x;
// more code assuming y is greater than x
}
答案 0 :(得分:5)
assert
语句采用以下形式
assert Expression1 : Expression2 ;
否则,通过根据值进行选择继续执行
Expression1
:
如果值为true,则不执行进一步操作和断言 声明正常完成。
如果值为false,则执行行为取决于是否
Expression2
存在:
如果存在
Expression2
,则会对其进行评估。
如果评估由于某种原因突然完成,则断言 由于同样的原因,声明突然完成。
如果评估正常完成,则为AssertionError实例 “详细信息”是表达式2的结果值。
如果由于某种原因实例创建突然完成,那么 由于同样的原因,断言声明突然完成。
如果实例创建正常完成,则为assert语句 通过抛出新创建的
AssertionError
突然完成 对象如果
Expression2
不存在,则AssertionError
实例不存在 “详细信息”已创建。