1

静的ブロックはチェックされた例外をスローできませんが、チェックされた例外がチェックされずに変換され、静的ブロックからスローされるコードをいくつか見てきました。その一例は、辞書のテキスト ファイルを読み取ることです。辞書の半分だけを読みたくないので、例外をキャッチする代わりにスローするのが理にかなっています。しかし、私の質問は、それは単なるハックなのか、それとも業界全体で一般的に採用されているコーディング スタイルなのかということです。

4

3 に答える 3

2

チェックされていない例外をスローするという決定はハックではありません。それが唯一の選択肢です。静的ブロック内の例外は、クラスの初期化の失敗を示します。これは実装であるため、クラスのユーザーがおそらく処理できないものです。あなたのクラスの詳細。つまり、静的ブロック内の例外は、プログラマーがシステムでクラスを使用した方法のエラーを示しているため、ブロックによって内部的に処理されるか、チェックされていない例外としてスローされてシステムを完全に停止する必要があります。 .

于 2013-10-20T20:13:25.173 に答える
1

それを処理できない場合は、それを投げる必要があります。そのため、必要なときに使用されます。

于 2013-10-20T20:06:55.640 に答える
1

あなたはこのように意味します:

static{
   try{
      //do something that throws a checked exception
      ...

   }catch(Exception e){
       //this is an unchecked exception
       throw new IllegalStateException("error initializing", e);
   }

}
于 2013-10-20T20:12:18.713 に答える