この問題があるとします
public class Father{
public void method1(){...}
}
public class Child1 extends Father{
public void method1() throws Exception{
super.method1();
...
}
}
Child1
拡張Father
およびオーバーライドしますmethod1
が、実装がChild1.method1
例外をスローするようになりました。オーバーライド メソッドは新しい例外をスローできないため、これはコンパイルされません。
最善の解決策は何ですか?
- 必要な例外を に伝播し
Father
ます。私にとって、これはカプセル化、継承、および一般的な OOP に反します (Father
決して発生しない例外をスローする可能性があります)。 RuntimeException
代わりにaを使用しますか? このソリューションは に伝播しませんがException
、Father
Oracle のドキュメントやその他のソースでは、「クライアント コードで何も実行できない」場合に例外のクラスを使用する必要があると記載されています。これはそうではなく、この例外は blablabla を回復するのに役立ちます (RuntimeException
代わりに使用するのがなぜ間違っているのでしょうか?)。- 他の..