作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
<分区>
我只是尝试使用 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
block 捕获,但是finally
block 会被执行,然后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
谁能解释这种行为?
我是一名优秀的程序员,十分优秀!