ホームページ >Java >&#&チュートリアル >Java でオーバーライドするときに例外をスローする場合、親子階層は重要ですか?
特定のメソッドによってスローされた (チェックされた) 例外を処理しようとする場合は、Exception クラスまたは例外が発生したスーパークラスを使用して例外をキャッチする必要があります。 。
同様に、スーパークラスのメソッドをオーバーライドするときに例外がスローされる場合、-
サブクラスのメソッドは同じ例外またはそのサブタイプをスローする必要があります。
サブクラス内のメソッドは、スーパータイプをスローしてはなりません。
sample() メソッドという名前のクラスがあるとします。
例 リアルタイムのデモンストレーションclass Demo { public void sample() throws ArrayIndexOutOfBoundsException { System.out.println("sample() method of the Demo class"); } } class SuperTest extends Demo { public void sample() throws IndexOutOfBoundsException { System.out.println("sample() method of the SuperTest class"); } } public class Test extends SuperTest { public static void main(String args[]) { Demo obj = new SuperTest(); try { obj.sample(); }catch (ArrayIndexOutOfBoundsException ex) { System.out.println("Exception"); } } }出力
sample() method of the SuperTest class
import java.io.IOException; import java.io.EOFException; class Demo { public void sample() throws IOException { System.out.println("sample() method of the Demo class"); } } class SuperTest extends Demo { public void sample() throws EOFException { System.out.println("sample() method of the SuperTest class"); } } public class Test extends SuperTest { public static void main(String args[]) { Demo obj = new SuperTest(); try { obj.sample(); }catch (EOFException ex){ System.out.println("Exception"); } } }出力
Test.java:12: error: sample() in SuperTest cannot override sample() in Demo public void sample() throws IOException { ^ overridden method does not throw IOException 1 error D:\>javac Test.java Test.java:20: error: unreported exception IOException; must be caught or declared to be thrown obj.sample(); ^ 1 error
以上がJava でオーバーライドするときに例外をスローする場合、親子階層は重要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。