AssertionError被捕获后,仍然可以执行后面的语句?

时间:2022-09-29 13:32:49
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运行,
为什么**********那一行仍然被执行了?

6 个解决方案

#1


up

#2


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

#3


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

#4


无论什么语言都执行流程都一样。

#5


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

#6


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

#1


up

#2


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

#3


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

#4


无论什么语言都执行流程都一样。

#5


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

#6


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