は、次のコードJAVAでは例外がチェックされていますか?
public void myMethod1() {
try {
this.getClass().getMethod("myMethod").invoke(this);
} catch (Exception e) {
throw e;
}
}
public void myMethod1_fixed() throws Exception {
try {
this.getClass().getMethod("myMethod").invoke(this);
} catch (Exception e) {
throw e;
}
}
public void myMethod2() {
try {
this.getClass().getMethod("myMethod").invoke(this);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
} catch (Exception e) {
throw e;
}
}
myMethod1()
がException
が例外をチェックされて、あなたがそれを処理することを余儀なくされているので、私は理解している、スローされるException e
を処理していない不満た検討するので、myMethod1_fixed()
はthrows Exception
を追加し、それが幸せでした。
myMethod2()
と表示されていますが、Exception e
がスローされますが、がオフの場合はthrows Exception
がなくても幸いでしたか?
コンパイラは、チェックされた例外が前のブロックで捕捉されたことを知っています。したがって、それは 'RuntimeException'でなければなりません。 – shmosel
すごかったよ。その答えで他の質問に私を指摘してくれてありがとう。したがって、チェックされた例外と未チェックの例外の定義に対する私の理解は正しいです.JAVA 7以降、実際の例外タイプを識別するのにコンパイラが賢明でした。しかし、とにかく、否定する必要はありません。 – user1589188