


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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

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
Einfach zu bedienender und kostenloser Code-Editor

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Dreamweaver Mac
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)