标签: java
可能重复: Exception in static initialization block
看起来静态初始化器不能抛出异常,我想知道其背后的原因。
答案 0 :(得分:4)
静态初始值设定项不能抛出已检查异常,因为类的初始化可能发生在代码中有效的任意位置,此时不会出现已检查的异常。
静态初始值设定项可以抛出未经检查的异常,这将阻止类正确初始化并阻止使用该类。但是,这样做会导致非常难以调试问题。
此规则在§8.7 Static Initializers of the JLS:
静态初始值设定项能够突然完成(§14.1,§15.6)且检查异常(§11.2)是一个编译时错误。