1. ホーム
  2. java

[解決済み] なぜJavaは静的な初期化ブロックからチェックされた例外を投げることができないのですか?

2022-05-29 10:51:10

質問

なぜJavaは静的な初期化ブロックからチェックされた例外を投げることを許さないのでしょうか?この設計上の決定の背景にはどのような理由があったのでしょうか。

どのように解決するのですか?

チェックした例外をソース内で処理することができないからです。初期化処理を制御できないし、static{}ブロックはソースから呼び出せないので、try-catchで囲むことができます。

チェックされた例外が示すエラーは処理できないため、チェックされた例外の静的ブロックへの投入を禁止することにしました。

静的ブロックは チェックされた 例外を投げてはいけませんが、unchecked/runtime-exceptions は投げることができます。しかし、上記の理由から、これらを処理することはできません。

要約すると、この制限は、アプリケーションが回復できないようなエラーを引き起こす可能性のあるものを、開発者が作るのを防ぐ(または少なくとも難しくする)ものです。