【发布时间】:2013-10-28 14:22:45
【问题描述】:
我只是在尝试使用 try-catch 和这段代码:
public class MainThread
{
public static void main(String [] args)
{
try
{
badMethod();
System.out.print("A");
}
catch (Exception ex)
{
System.out.print("B");
}
finally
{
System.out.print("C");
}
System.out.print("D");
}
public static void badMethod()
{
throw new Error(); /* Line 22 */
}
}
我知道Error不会被上面的catch块捕获,但是finally块会被执行,然后JVM就会终止。
但是当我尝试多次运行程序时,我得到不同的输出:
C 打印在堆栈跟踪之前:
CException in thread "main" java.lang.Error
at MainThread.badMethod(MainThread.java:22)
at MainThread.main(MainThread.java:7)
或C 在堆栈跟踪之后打印:
Exception in thread "main" java.lang.Error
at MainThread.badMethod(MainThread.java:22)
at MainThread.main(MainThread.java:7)
C
谁能解释这种行为?
【问题讨论】: