java获取异常InTilizerError
当我试图运行以下代码时,我得到的是ExceptionInInitializeRerror而不是NullPointerException。为什么?
static
{
String s= null;
System.out.println(s.length());
}
你可以在下面搜索框中键入要查询的问题!
当我试图运行以下代码时,我得到的是ExceptionInInitializeRerror而不是NullPointerException。为什么?
static
{
String s= null;
System.out.println(s.length());
}
# 1 楼答案
静态块是java中类代码的一部分,在第一次加载类时调用它。如果您仔细查看收到的例外情况:
您有一个NullPointerException包装在ExceptionInitializeError中。 因此,您收到了一个NullPointerException,并且由于该错误发生在无法进一步正常执行的空间,因此您得到了ExceptionInitializeaterError
# 2 楼答案
这是因为加载程序在初始化此类时看到错误。如果看到内部堆栈跟踪,您将发现NullPointerException。但由于在装入器看到错误时是初始化类的过程,所以您会看到这个“ExceptionInInitializeError”
# 3 楼答案
当您使用静态初始值设定项块时,不会像在代码的其余部分那样处理错误。当初始化程序块中抛出错误时,JVM抛出
java.lang.ExceptionInInitializerError
。当静态变量初始化失败时,也会发生这种情况