| package debug; public class MyTest{ static int i = 100/0; public static void main(String[] args){ Ssytem.out.println("Hello,World!"); } } |
| java.lang.ExceptionInInitializerError Caused by: java.lang.ArithmeticException: / by zero at debug.MyTest.(Test.java:3) Exception in thread "main" |
| package debug; public class Test { Test(){ int i = 100 / 0; } public static void main(String[] args) { new Test(); } } |
jdk1.5输入:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at debug.Test.
at debug.Test.main(Test.java:7)
JVM并没有把异常定位在Test()构造方法中,而是在debug.Test.
当我们看到了这两个方法以后,我们再来具体讨论这两个“内置初始化方法”(我并不喜欢生造一些非标准的术语,但我确实不知道如何规范地称呼他们)。
内置初始化方法是JVM在内部专门用于初始化的特有方法,而不是提供给程序员调用的方法,事实上“<>”这样的语法在源程序中你连编译都无法通过。这就说明,初始化是由JVM控制而不是让程序员来控制的。
评论加载中…
![]() |