Rumah >Java >javaTutorial >Adakah hierarki ibu bapa-anak penting untuk membuang pengecualian apabila mengatasi di Jawa?
Apabila anda cuba mengendalikan pengecualian (ditanda) yang dilemparkan dengan kaedah tertentu, anda perlu menangkapnya menggunakan kelas Exception atau superclass tempat pengecualian itu berlaku.
Begitu juga, apabila mengatasi kaedah kelas super, jika ia membuang pengecualian −
Kaedah dalam subkelas harus membuang pengecualian yang sama atau subjenisnya.
Kaedah dalam subkelas tidak seharusnya membuang jenis supernya.
Anda boleh mengatasi tanpa membuang sebarang pengecualian.
Apabila anda mempunyai tiga kelas (hierarki) bernama Demo, SuperTest dan Super inheriting, jika Demo dan SuperTest mempunyai kaedah bernama sample().
Demonstrasi Langsung
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
Jika kelas yang anda tangkap pengecualian tidak sama dengan pengecualian yang dilemparkan atau bukan kelas super pengecualian, anda akan mendapat ralat masa kompilasi.
Begitu juga, apabila mengatasi kaedah, pengecualian yang dilemparkan hendaklah sama dengan pengecualian yang dilemparkan oleh kaedah yang ditindih atau kelas supernya, jika tidak, ralat masa kompilasi akan berlaku.
Demonstrasi
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
Atas ialah kandungan terperinci Adakah hierarki ibu bapa-anak penting untuk membuang pengecualian apabila mengatasi di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!