8

一般に、Java で例外を処理するには 2 つの方法があります。

  1. メソッド シグネチャに throws 宣言を追加する
  2. try/catch ブロックで囲みます。

RuntimeExceptionただし、一部の例外、特に から継承されたものは、そのような明示的な例外処理を必要としないことに気付きました。

たとえば、以下のようなサンプル メソッドを作成し、明示的な例外処理を必要としないものについては「不要」とマークしました。

public void textException(){
    int i = (new Random()).nextInt(100);

    switch (i){
    case 1:
        throw new NullPointerException();   //Not required
    case 2:
        throw new NumberFormatException();  //Not required
    case 3:
        throw new RuntimeException();       //Not required
    case 4:         
        throw new ClassNotFoundException(); //Required
    case 5:
        throw new IOException();            //Required
    case 6:
        throw new Exception();              //Required
    default:
        return;
    }
}

RuntimeExceptionから継承していることに気付きましたException

RuntimeExceptionコンパイルするために明示的にキャッチする必要がないのはなぜExceptionsですか?

4

2 に答える 2

1

「クライアントが例外から回復することが合理的に期待できる場合は、それをチェック済み例外にします。クライアントが例外から回復するために何もできない場合は、非チェック例外にします。」 http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

于 2014-08-22T13:17:42.587 に答える
1

Java の場合、RuntimeException はシステム例外と見なされます。通常は回復できないため、メソッドに throws 宣言を追加したり、try catch ブロックを使用して処理したりする必要はありません。ただし、例外はアプリケーション例外とみなされ、回復可能です。

于 2013-02-21T05:29:26.803 に答える