私はJavaの初心者です。エラーが発生した場合はご容赦ください。提案を歓迎します。私が行ったエラーについて喜んで耳を傾けます。私の質問を読んで返信してくれてありがとう。
私はいくつかの本から以下のコードを取得します
コードでは新しい例外がスローされますが、それでもコードはコンパイルされ、それに類似したコードがもう 1 つ貼り付けられますが、別の動作を理解できませんでした
最初のコードは X を出力しますが、私によると、オーバーライドされたメソッドfoo()
は新しい例外をスローすべきではありません。次に、メソッドの呼び出し中foo
にtry
-節があるcatch
場合は使用する必要があります。throws
class X { public void foo() { System.out.print("X "); } }
public class SubB extends X {
public void foo() throws RuntimeException {
super.foo();
if (true) throw new RuntimeException();
System.out.print("B ");
}
public static void main(String[] args) {
new SubB().foo();
}
}
2 番目のコードは上記と似ていますが、メソッドの呼び出し中にtry
-を使用する必要があります。catch
class A {
void foo() throws Exception { throw new Exception(); }
}
class SubB2 extends A {
void foo() { System.out.println("B "); }
}
class Tester {
public static void main(String[] args) {
A a = new SubB2();
a.foo();
}
}
この例外は親クラスのfoo
メソッドで拡張されますが、上記のコードでは例外はサブクラスのfoo
メソッドにあります。