为什么静态初始化程序不能抛出异常

时间:2011-04-14 06:27:05

标签: java

  

可能重复:
  Exception in static initialization block

看起来静态初始化器不能抛出异常,我想知道其背后的原因。

1 个答案:

答案 0 :(得分:4)

静态初始值设定项不能抛出已检查异常,因为类的初始化可能发生在代码中有效的任意位置,此时不会出现已检查的异常。

静态初始值设定项可以抛出未经检查的异常,这将阻止类正确初始化并阻止使用该类。但是,这样做会导致非常难以调试问题。

此规则在§8.7 Static Initializers of the JLS

  

静态初始值设定项能够突然完成(§14.1§15.6)且检查异常(§11.2)是一个编译时错误。