Wenn Sie versuchen, eine (überprüfte) Ausnahme zu behandeln, die von einer bestimmten Methode ausgelöst wird, müssen Sie sie mit der Klasse Exception oder der Superklasse, in der die Ausnahme aufgetreten ist, abfangen.
Ähnlich gilt, dass beim Überschreiben einer Methode einer Superklasse eine Ausnahme ausgelöst wird: −
Die Methode in der Unterklasse sollte dieselbe Ausnahme oder ihren Untertyp auslösen.
Methoden in Unterklassen sollten ihren Supertyp nicht verlassen.
Sie können überschreiben, ohne eine Ausnahme auszulösen.
Wenn Sie drei Klassen (Hierarchie) mit den Namen Demo, SuperTest und Super haben, die erben, wenn Demo und SuperTest eine Methode namens sample() haben.
Live-Demonstration
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
Wenn die Klasse, in der Sie die Ausnahme abfangen, nicht mit der ausgelösten Ausnahme übereinstimmt oder nicht die Superklasse der Ausnahme ist, erhalten Sie einen Fehler bei der Kompilierung.
Ebenso sollte beim Überschreiben einer Methode die ausgelöste Ausnahme dieselbe sein wie die Ausnahme, die von der überschriebenen Methode oder ihrer Oberklasse ausgelöst wird, da andernfalls ein Fehler bei der Kompilierung auftritt.
Demonstration
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
Das obige ist der detaillierte Inhalt vonIst die Eltern-Kind-Hierarchie wichtig für das Auslösen von Ausnahmen beim Überschreiben in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!