suchen
HeimJavajavaLernprogrammWie funktioniert die Ausnahmeweitergabe, wenn Ausnahmen innerhalb von Catch- und Final-Blöcken in Java ausgelöst werden?

How does exception propagation work when exceptions are thrown within catch and finally blocks in Java?

Ausnahmeweitergabe in Catch- und Final-Blöcken

Wenn in einem Java-Programm eine Ausnahme auftritt, breitet sie sich über den Stapel aus, bis sie behandelt wird durch einen geeigneten Catch-Block oder beendet das Programm. Ausnahmen können jedoch auch innerhalb von Catch- oder Final-Blöcken ausgelöst werden, was Fragen zu ihrem Ausbreitungsverhalten aufwirft.

Beachten Sie den folgenden Codeausschnitt:

<code class="java">class MyExc1 extends Exception {}
class MyExc2 extends Exception {}
class MyExc3 extends MyExc2 {}

public class C1 {
    public static void main(String[] args) throws Exception {
        try {
            System.out.print(1);
            q();
        }
        catch (Exception i) {
            throw new MyExc2(); // Exception thrown in catch block
        }
        finally {
            System.out.print(2);
            throw new MyExc1(); // Exception thrown in finally block
        }
    }

    static void q() throws Exception {
        try {
            throw new MyExc1();
        }
        catch (Exception y) {
        }
        finally {
            System.out.print(3);
            throw new Exception(); // Exception thrown in finally block
        }
    }
}</code>

Wenn eine Ausnahme innerhalb eines Catch- oder Final-Blocks ausgelöst wird Für den Final-Block gilt das folgende Prinzip:

Ausnahmeüberschreibung: Wenn eine neue Ausnahme innerhalb eines Catch- oder Final-Blocks ausgelöst wird, die sich aus diesem Block heraus verbreiten soll, wird die aktuelle Ausnahme ausgeführt wird abgebrochen und die neue Ausnahme breitet sich nach außen aus und nimmt ihren Platz ein. Die abgebrochene Ausnahme wird verworfen.

Im bereitgestellten Code demonstriert das Ausnahmeszenario in den Blöcken „catch“ und „finally“ dieses Prinzip:

  • Catch-Block: Wenn die Ausnahme i innerhalb des Catch-Blocks ausgelöst wird, wird sie sofort durch die neue Ausnahme MyExc2 ersetzt, die zur laufenden Ausnahme wird.
  • Finally Block: Ebenso, wenn die Ausnahme ausgelöst wird Innerhalb des „final“-Blocks ersetzt es die aktuelle MyExc2-Ausnahme durch MyExc1 und macht sie zur neuen Ausnahme in Bearbeitung.

Wenn die Programmausführung nach dem Abwickeln des Stapels die Hauptmethode erreicht, wird folglich die MyExc2-Ausnahme ausgeführt wurde von MyExc1 überschrieben, das anschließend gedruckt und verarbeitet wird. Daher lautet die korrekte Ausgabe „132Exception in thread main MyExc1.“

Das obige ist der detaillierte Inhalt vonWie funktioniert die Ausnahmeweitergabe, wenn Ausnahmen innerhalb von Catch- und Final-Blöcken in Java ausgelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)