Java 获取ExceptionInTilizerError
当我试图运行以下代码时,我得到的是ExceptionInInitializeRerror而不是NullPointerException。为什么?Java 获取ExceptionInTilizerError,java,Java,当我试图运行以下代码时,我得到的是ExceptionInInitializeRerror而不是NullPointerException。为什么? static { String s= null; System.out.println(s.length()); } 当您使用静态初始值设定项块时,不会像在代码的其余部分那样处理错误。当初始化程序块中抛出错误时,JVM抛出java.lang.ExceptionInInitializerError。当静态变量初始化失败时也会发生这种
static
{
String s= null;
System.out.println(s.length());
}
当您使用静态初始值设定项块时,不会像在代码的其余部分那样处理错误。当初始化程序块中抛出错误时,JVM抛出
java.lang.ExceptionInInitializerError
。当静态变量初始化失败时也会发生这种情况。当您使用静态初始值设定项块时,错误不会像在代码的其余部分中那样被处理。当初始化程序块中抛出错误时,JVM抛出java.lang.ExceptionInInitializerError
。当静态变量初始化失败时也会发生这种情况。这是因为加载程序在初始化此类时看到错误。如果看到内部堆栈跟踪,您将发现NullPointerException。但由于loader看到错误时是初始化类的过程,因此您会看到“ExceptionInInitializeError”。这是因为loader在初始化此类时看到错误。如果看到内部堆栈跟踪,您将发现NullPointerException。但是,由于加载程序看到错误时是初始化类的过程,因此您会看到这个“ExceptionInInitializeError”。静态块是java中类代码的一部分,在第一次加载类时会调用它。如果您仔细查看收到的例外情况:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at Main.Test.<clinit>(Test.java:8)
线程“main”java.lang.ExceptionInInitializeError中的异常
原因:java.lang.NullPointerException
Test.(Test.java:8)
您有一个NullPointerException包装在ExceptionInitializeError中。
因此,您收到了一个NullPointerException,并且由于该错误发生在无法进一步正常执行的空间,因此您得到了ExceptionInitializeaterError静态块是java中类代码的一部分,在第一次加载类时会调用它。如果您仔细查看收到的例外情况:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at Main.Test.<clinit>(Test.java:8)
线程“main”java.lang.ExceptionInInitializeError中的异常
原因:java.lang.NullPointerException
Test.(Test.java:8)
您有一个NullPointerException包装在ExceptionInitializeError中。
因此,您收到了一个NullPointerException,并且由于该错误发生在无法进一步正常执行的空间,因此您得到了ExceptionInitializateError,因为您的类无法初始化,因为您的类无法初始化