Java为什么不允许从静态初始化块中引发检查异常?这个设计决定背后的原因是什么?
因为无法在源中处理这些检查的异常。您对初始化过程没有任何控制,并且无法从源代码中调用static {}块,因此可以用try-catch包围它们。
由于您无法处理检查异常指示的任何错误,因此决定禁止抛出检查异常静态块。
静态块不得抛出已检查的异常,但仍允许引发未检查的/运行时异常。但是根据上述原因,您也将无法处理这些问题。
总而言之,此限制可防止(或至少使开发人员更难)构建可能会导致错误的应用程序无法恢复的东西。