Als ich zum ersten Mal Java-Ausnahmebehandlung lernte, erinnere ich mich an ein paar Sätze über die Behandlung von Eltern-Sohn-Ausnahmen: "Eine Methode für untergeordnete Klassen kann nur Ausnahmen oder untergeordnete Ausnahmen veröffentlichen, die von der übergeordneten Klassenmethode geworfen werden, und der Konstruktor der untergeordneten Klassen muss Ausnahmen oder Aussagen der Eltern des übergeordneten Klassenkonstruktors werfen." Zu dieser Zeit wusste ich nicht, warum die Unterklasse -Methode Ausnahmen wie diese werfen musste. Später verstand ich durch das Lernen "Denken in Java" die Wahrheit. Jetzt werde ich es überprüfen.
1. Subklassenmethoden können nur Ausnahmen von übergeordneten Klassenmethoden oder ihren untergeordneten Ausnahmen ausführen.
Für diese Einschränkung liegt dies hauptsächlich daran, dass Unterklassen keine Ausnahmen korrekt erfassen können
Paket ThinkingInjava; öffentliche abstrakte Klasse InningDemo1 {public void Walk () löscht Baseexception {} public abstract void sing () aus Baseexception;} Klasse Baseexception erweitert die Ausnahme {} Klasse SubException1 erweitert Baseexception {} cupException Excepts {} Paket ThinkingInjava; öffentliche Schnittstelle Andere Funktionen {public void task () löscht RunTimeException;}Paket ThinkingInjava; SubinningDemo1 der öffentlichen Klasse erweitert InningDemo1 implementiert andere Funktionen. Kann untergeordnete Ausnahmen von der übergeordneten Klassenmethode @Override public void Sing () veröffentlichen.
Nehmen Sie dieses Beispiel als Beispiel. Wenn es diese Methode in der Unterklasse öffentliche void Walk () gibt, löst Cupexception {} aus, eine Ausnahme, die die übergeordnete Klassenmethode nicht hat. Wir verwenden die Referenz der übergeordneten Klasse, um auf die untergeordnete Klasse zu verweisen.
public void f () {InningDemo1 inn = new SubinningDemo1 (); Inn.Walk (); // Wenn die übergeordnete Klasse die Methode von Walk () anruft, weiß sie nicht, dass sie eine Cupexception wirft, sodass die F () -Methode nicht weiß, wie man die Ausnahme fängt. Daher sollten während der Kompilierungsperiode Unterklassenverfahren daran gehindert werden, Ausnahmen zufällig zu werfen. }Aus dem obigen Beispiel können wir auch sehen
2. Der Konstruktor der Unterklasse muss eine Ausnahme oder seine übergeordnete Ausnahme auslegen.
Dies liegt daran, dass der Konstruktor der Unterklasse standardmäßig zum Konstruktor der übergeordneten Klassen hinzugefügt wird.
Paket ThinkingInjava; öffentliche abstrakte Klasse InningDemo2 {public InningDemo2 () löscht die SubException {}} Klasse Fatherexception erweitert die Ausnahme {} Klasse SubException erweitert Fatherexception {} Klasse PenException erweitert Ausnahme {} Paket ThinkingInjava; SubinningDemo2 der öffentlichen Klasse erweitert InningDemo2 {public subinningDemo2 () löst Fatherexception aus {// Der Konstruktor der übergeordneten Klasse wird standardmäßig im Unterklassenkonstruktor hinzugefügt, sodass eine Ausnahme der übergeordneten Klasse oder ihrer übergeordneten Ausnahme ausgeworfen werden muss // Super (); }}3.. Abnormaler Verlust
1. Wirf eine Ausnahme in schließlich die Ausnahme verloren.
Paket ThinkingInjava; öffentliche Klasse endgültigException {public static void main (String [] args) {try {try {throw New RedException (); } endlich {// decken die vorherige Ausnahme ab, werfen neue blusexception (); }} catch (Ausnahme e) {System.out.println (e); }}} Klasse RedException erweitert die Ausnahme {} Klasse BlueException erweitert die Ausnahme {}Laufen Ergebnis: Denkeninjava.BlueException
2. Verwenden Sie die Rückkehr in Schluss
Paket ThinkingInjava; öffentliche Klasse returnException {public static void main (String [] args) {try {neue Ausnahme werfen); } endlich {return; }}}Wir sehen, dass es eine Ausnahme ausgelöst hat, aber es wird beim Ausführen keine Ausgabe geben
In dem obigen Artikel werden die Java-Ausnahmebehandlung (Vater-Sohn-Ausnahmeregelung) kurz erläutert, ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.