小编典典

Java为什么不允许从静态初始化块中引发检查异常?

java

Java为什么不允许从静态初始化块中引发检查异常?这个设计决定背后的原因是什么?


阅读 557

收藏
2020-03-16

共1个答案

小编典典

因为无法在源中处理这些检查的异常。您对初始化过程没有任何控制,并且无法从源代码中调用static {}块,因此可以用try-catch包围它们。

由于您无法处理检查异常指示的任何错误,因此决定禁止抛出检查异常静态块。

静态块不得抛出已检查的异常,但仍允许引发未检查的/运行时异常。但是根据上述原因,您也将无法处理这些问题。

总而言之,此限制可防止(或至少使开发人员更难)构建可能会导致错误的应用程序无法恢复的东西。

2020-03-16