有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取异常InTilizerError

当我试图运行以下代码时,我得到的是ExceptionInInitializeRerror而不是NullPointerException。为什么?

static 
{
   String s= null;
   System.out.println(s.length()); 
}  

共 (3) 个答案

  1. # 1 楼答案

    静态块是java中类代码的一部分,在第一次加载类时调用它。如果您仔细查看收到的例外情况:

    Exception in thread "main" java.lang.ExceptionInInitializerError
    Caused by: java.lang.NullPointerException
        at Main.Test.<clinit>(Test.java:8)
    

    您有一个NullPointerException包装在ExceptionInitializeError中。 因此,您收到了一个NullPointerException,并且由于该错误发生在无法进一步正常执行的空间,因此您得到了ExceptionInitializeaterError

  2. # 2 楼答案

    这是因为加载程序在初始化此类时看到错误。如果看到内部堆栈跟踪,您将发现NullPointerException。但由于在装入器看到错误时是初始化类的过程,所以您会看到这个“ExceptionInInitializeError”

  3. # 3 楼答案

    当您使用静态初始值设定项块时,不会像在代码的其余部分那样处理错误。当初始化程序块中抛出错误时,JVM抛出java.lang.ExceptionInInitializerError。当静态变量初始化失败时,也会发生这种情况