public class AssertTest3
{
static int i = 10;
public static void main(String args[])
{
i = i*2;
try
{
assert isValid() : i = i/4;
}
catch(AssertionError ignore){
System.out.println("--------------");
}

System.out.println("i = " +i);//*********这行被执行了?
}

public static boolean isValid()
{
i = i * 2;
return false;
}
}用javac -source 1.4 AssertTest.java编译后,用java -ea AssertTest运行,
为什么**********那一行仍然被执行了?

解决方案 »

  1.   

    当然执行了,执行完catch中的语句后,catch之后的语句仍然执行。
      

  2.   

    是的,当然会执行了。执行完catch中的语句后,catch之后的语句仍然执行。一般在catch块中捕捉到异常后,为了程序流程的需要,最好在这个块中返回。return ...
    兄弟,这是常识啊。你咋搞的,都三个角了。
      

  3.   

    谢谢个位,
    这几天复习SCJP,头晕了。
    lllllllllluoyi(罗毅) 批评得对,小弟会继续努力的
      

  4.   

    assert isValid() : i = i/4;
    断言是什么意思?