3

1 つのメソッドがスローしている例外を調べています。メソッドは次のようになります。

public void someMethod() throws someCheckedException{

  //doSomething statements
  //but no statements actually throws 'someCheckedException'

}

私の質問は、実装に throw ステートメントがまったくないときに、このメソッドに「someCheckedException」をスローさせることは可能かということです。

例外をスローするステートメントを実装せずに署名に例外をスローするのは間違っていますか?

4

3 に答える 3

5

これはまったく問題ありません。メソッド署名の throw ステートメントは、メソッドが throws ステートメントで宣言された実際の例外をスローし、通常は処理を別のクラスに渡す場合に備えてあります。使用するときに、そのようなメソッドを try catch ステートメントに入れることを覚えておく必要があります。

于 2013-05-02T22:34:49.873 に答える
1

例外は、someMethod によって呼び出されたメソッドの 1 つによってスローされた可能性があります。

例えば

    void method1() throws Exception {
        method2();
    }

    void method2() {
        throw new Exception();
    }
于 2013-05-02T22:35:47.403 に答える
1

それは合法です。これは、RMI で非常に一般的に行われます。リモート インターフェースのメソッドは、RemoteException をスローするように宣言する必要がありますが、実装メソッドはそれを宣言する必要はありません。実際にはそれ自体をスローしないためです (独自の RMI 呼び出しを行わない限り)。リモート例外は、RMI 自体によってスローされます。ただし、リモート インターフェイスに同意するためだけにそうするように宣言されることがよくあります。それは必要はありません。

于 2013-05-02T23:04:25.867 に答える