【问题标题】:Why JVM does not allow to throw Unchecked Exception from static block?为什么 JVM 不允许从静态块中抛出未经检查的异常?
【发布时间】:2018-02-07 13:50:41
【问题描述】:

为什么JVM不允许从静态块抛出Unchecked Exception? 但它仍然隐式地允许它们(例如:在 null 对象上调用方法)。

注意:这个问题更多是学术性的,而不是来自现实生活的问题。

【问题讨论】:

    标签: java exception static unchecked-exception


    【解决方案1】:

    你可以用一点技巧把它扔掉,但你会得到ExceptionInInitializerError

    表示静态初始化程序中发生了意外异常。抛出 ExceptionInInitializerError 以指示在计算静态初始化程序或静态变量的初始化程序期间发生了异常。

    static {
        try {
            throw new RuntimeException();
        }
        catch (IllegalArgumentException ignored){}
    }
    

    java.lang.ExceptionInInitializerError
    引起:java.lang.RuntimeException
    ...

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多