Rumah >Java >javaTutorial >Adakah hierarki ibu bapa-anak penting untuk membuang pengecualian apabila mengatasi di Jawa?

Adakah hierarki ibu bapa-anak penting untuk membuang pengecualian apabila mengatasi di Jawa?

WBOY
WBOYke hadapan
2023-08-19 13:49:231291semak imbas

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().

Contoh

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");
      }
   }
}

Output

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.

Contoh

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");
      }
   }
}

Output

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam