Ausnahmebehandlung in Java
⚡ Intelligente Zusammenfassung
Java Die Ausnahmebehandlung bietet einen strukturierten Mechanismus zur Behandlung von Laufzeitfehlern, die den normalen Programmablauf unterbrechen. Sie verwendet die Schlüsselwörter try, catch, finally, throw und throws, um Ausnahmezustände zu erkennen, zu isolieren und zu beheben, während gleichzeitig der Programmablauf aufrechterhalten wird.ping robuste und vorhersehbare Anwendungen.

Was ist eine Ausnahme in Java?
An Ausnahme in Java Ein Fehler ist ein Ereignis, das die Ausführung von Programmanweisungen unterbricht und den normalen Programmablauf stört. Es handelt sich um ein Objekt, das die Fehlerinformationen eines innerhalb einer Methode aufgetretenen Fehlers kapselt und an das Laufzeitsystem übergeben wird. JavaAusnahmen dienen hauptsächlich dazu, verschiedene Arten von Fehlerzuständen zu signalisieren, damit Entwickler kontrolliert darauf reagieren können.
Es gibt zwei große Fehlerkategorien in Java:
- Fehler bei der Kompilierungszeit
- Laufzeitfehler
Kompilierzeitfehler lassen sich in zwei weitere Typen unterteilen:
- Syntaxfehler
- Semantische Fehler
Beispiel für Syntaxfehler:
Anstatt zu deklarieren int a; Sie haben es fälschlicherweise als angegeben in a;, woraufhin der Compiler einen Fehler ausgibt.
Beispiel für semantische Fehler: Sie haben eine Variable deklariert int a; und nach einigen Codezeilen deklarieren Sie erneut eine Ganzzahl als int a;. Alle diese Fehler werden hervorgehoben, wenn Sie den Code kompilieren.
Beispiel für Laufzeitfehler
Ein Laufzeitfehler wird als ein ExceptionEine Ausnahme ist jedes Ereignis, das den normalen Programmablauf unterbricht. Beispiele für Ausnahmen sind arithmetische Ausnahmen, NullPointerExceptions, Division-durch-Null-Ausnahmen und viele mehr. Java Es handelt sich dabei um Bedingungen, die oft außerhalb der direkten Kontrolle eines Entwicklers liegen.
Klicken Sie auf werden auf dieser Seite erläutert wenn das Video nicht zugänglich ist
Warum benötigen wir Ausnahmebehandlung?
Angenommen, Sie haben ein Programm geschrieben, um auf einen Server zuzugreifen. Während der Entwicklung funktioniert alles einwandfrei.ping den Code in einer lokalen Umgebung mit kontrollierten Bedingungen.
Während des laufenden Produktionsbetriebs kann der Server ausfallen. Wenn Ihr Programm versucht, darauf zuzugreifen, wird eine Ausnahme ausgelöst, und ohne entsprechende Behandlung wird das Programm abrupt beendet.
Wie man eine Ausnahme behandelt in Java
Bisher haben wir gesehen, dass Ausnahmen oft außerhalb der Kontrolle des Entwicklers liegen. Codefehler jedoch auf Umgebungsprobleme zu schieben, ist keine wirkliche Lösung. Es bedarf einer robusten Programmierung, die Ausnahmesituationen berücksichtigt. Solcher Code wird als Ausnahmebehandlung bezeichnet. Ausnahmebehandlung.
In unserem Beispiel würde eine gute Ausnahmebehandlung bedeuten, dass das Programm sich automatisch mit einem Backup-Server verbindet, wenn der primäre Server ausfällt.
Um dies umzusetzen, könnten Sie Code schreiben, der mithilfe herkömmlicher if- und else-Bedingungen eine Verbindung zum Server herstellt. Sie prüfen, ob der Server ausgefallen ist, und stellen in diesem Fall eine Verbindung zum Backup-Server her. Diese Art der Codeorganisation mit if- und else-Zweigen ist jedoch nicht effektiv, wenn Ihr Code mehrere … enthält. Java Ausnahmen zu handhaben.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Versuchen Sie, den Catch-Block in Java
Java bietet einen integrierten Ausnahmebehandlungsmechanismus, der die normale Logik von der Fehlerbehebungslogik trennt.
- Der normale Code geht in a TESTEN blockieren.
- Der Ausnahmebehandlungscode geht in die CATCH blockieren.
In unserem Beispiel enthält der TRY-Block den Code zum Herstellen einer Verbindung zum Server. Der CATCH-Block enthält den Code zum Herstellen einer Verbindung zum Backup-Server. Ist der Server erreichbar, wird der Code im CATCH-Block ignoriert. Ist der Server nicht erreichbar, wird eine Ausnahme ausgelöst und der Code im CATCH-Block ausgeführt.
So wird also eine Ausnahme behandelt in Java.
Syntax für die Verwendung von try und catch
try{ statement(s) } catch (exceptiontype name){ statement(s) }
Beispiel eines Try-Catch-Blocks
Schritt 1) Kopieren Sie den folgenden Code in einen Editor.
class JavaException { public static void main(String args[]){ int d = 0; int n = 20; int fraction = n/d; System.out.println("End Of Main"); } }
Schritt 2) Speichern Sie die Datei und kompilieren Sie den Code. Führen Sie das Programm mit dem Befehl „java“ aus. JavaAusnahme.
Schritt 3) Es wird eine arithmetische Ausnahme (Division durch Null) in Zeile 5 angezeigt, und Zeile 6 wird nie ausgeführt.
Schritt 4) Nun wollen wir untersuchen, wie uns try-catch bei der Behandlung dieser Ausnahme helfen. Wir werden die Codezeile, die die Ausnahme auslöst, in einen try-catch-Block einfügen. versuchen Block, gefolgt von a Fang Block. Kopieren Sie den folgenden Code in den Editor.
class JavaException { public static void main(String args[]) { int d = 0; int n = 20; try { int fraction = n / d; System.out.println("This line will not be Executed"); } catch (ArithmeticException e) { System.out.println("In the catch Block due to Exception = " + e); } System.out.println("End Of Main"); } }
Schritt 5) Speichern, kompilieren und führen Sie den Code aus. Sie erhalten die folgende Ausgabe.
Wie Sie sehen, wird die Ausnahme behandelt und die letzte Codezeile ausgeführt. Beachten Sie außerdem, dass Zeile 7 nicht ausgeführt wird, weil Sobald eine Ausnahme ausgelöst wird, springt der Kontrollfluss zum Catch-Block.
Hinweis: Das ArithmeticException-Objekt „e“ enthält Informationen über die aufgetretene Ausnahme, die bei der Durchführung von Wiederherstellungsmaßnahmen hilfreich sein können.
Java Ausnahmeklassenhierarchie
Nach Ausführung einer catch-Anweisung werden die übrigen übersprungen, und die Ausführung wird nach dem try-catch-Block fortgesetzt. Verschachtelte catch-Blöcke müssen der Ausnahmehierarchie von der spezifischsten Unterklasse zur allgemeinsten Oberklasse folgen.
- Alle Ausnahmeklassen in Java Erweitere die Klasse Throwable. Throwable hat zwei Unterklassen, Error und Exception.
- Die Klasse „Error“ definiert die Ausnahmen oder Probleme, die unter normalen Umständen in Ihrem Programm nicht auftreten sollten, zum Beispiel Speicherfehler, Hardwarefehler oder JVM-Fehler.
- Die Exception-Klasse repräsentiert die Ausnahmen, die von Ihrem Programm behandelt werden können, und Ihr Programm kann sich mithilfe von try- und catch-Blöcken von diesen Ausnahmen erholen.
- Eine RuntimeException ist eine Unterklasse der Exception-Klasse. Ausnahmen dieses Typs stellen ungeprüfte Ausnahmen dar, die zur Laufzeit auftreten und nicht zur Kompilierzeit erkannt werden können. Beispiele hierfür sind die Division durch Null und die Nullzeiger-Ausnahme.
- Bei Eingabe- und Ausgabevorgängen wird eine IOException ausgelöst.
- InterruptedException in Java wird während Multithread-Operationen generiert, wenn ein Thread unterbrochen wird.
Beispiel: Verschachtelung von try- und catch-Blöcken
Schritt 1) Kopieren Sie den folgenden Code in einen Editor.
class JavaException { public static void main(String args[]) { try { int d = 1; int n = 20; int fraction = n / d; int g[] = { 1 }; g[20] = 100; } /*catch(Exception e){ System.out.println("In the catch block due to Exception = "+e); }*/ catch (ArithmeticException e) { System.out.println("In the catch block due to Exception = " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("In the catch block due to Exception = " + e); } System.out.println("End Of Main"); } }
Schritt 2) Speichern Sie die Datei und kompilieren Sie den Code. Führen Sie das Programm mit folgendem Befehl aus: Java JavaException.
Schritt 3) Es wird eine ArrayIndexOutOfBoundsException ausgelöst. Ändern Sie den Wert von int d auf 0. Speichern, kompilieren und führen Sie den Code aus.
Schritt 4) Es muss eine ArithmeticException ausgelöst werden.
Schritt 5) Entfernen Sie die Kommentarzeichen in den Zeilen 10 bis 12. Speichern, kompilieren und führen Sie den Code aus.
Schritt 6) Kompilierungsfehler? Das liegt daran, dass `Exception` die Basisklasse von `ArithmeticException` ist. Jede Ausnahme, die von `ArithmeticException` ausgelöst wird, kann auch von der Klasse `Exception` behandelt werden. Daher wird der `catch`-Block von `ArithmeticException` nie ausgeführt und ist somit überflüssig. Dies führt zu dem Kompilierungsfehler.
Java Endlich blockieren
Der „finally“-Block ist wird unabhängig davon ausgeführt, ob eine Ausnahme ausgelöst wurde im try-Block. Es ist optional Zur Verwendung mit einem try-Block. Der finally-Block ist der richtige Ort, um Ressourcen wie Datenbankverbindungen, Dateien oder Netzwerk-Sockets freizugeben.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Wird im try-Block eine Ausnahme ausgelöst, wird der finally-Block ausgeführt, nachdem der catch-Block abgeschlossen ist.
Beispiel für einen finally-Block
Schritt 1) Kopieren Sie den folgenden Code in einen Editor.
class JavaException { public static void main(String args[]){ try{ int d = 0; int n =20; int fraction = n/d; } catch(ArithmeticException e){ System.out.println("In the catch block due to Exception = "+e); } finally{ System.out.println("Inside the finally block"); } } }
Schritt 2) Den Code speichern, kompilieren und ausführen.
Schritt 3) Erwartete Ausgabe: Der finally-Block wird ausgeführt, obwohl eine Ausnahme ausgelöst wird.
Schritt 4) Ändere den Wert der Variablen d auf 1. Speichere, kompiliere und führe den Code aus und beobachte die Ausgabe.
Best Practices für Java Ausnahmebehandlung
Wenn Sie ein paar bewährte Regeln befolgen, können Sie Ihre Java Robuster, lesbarer und leicht zu debuggender Code:
- Fangen Sie zuerst die spezifischste Ausnahme ab, dann die allgemeineren, um die Integrität der Ausnahmehierarchie zu wahren.
- Vermeiden Sie leere Catch-Blöcke. Protokollieren Sie zumindest die Ausnahme, damit die Ursache niemals verloren geht.
- Verwenden Sie den finally-Block oder versuchen Sie es mit resources, um Dateien, Sockets und Datenbankverbindungen freizugeben.
- Geprüfte Ausnahmen sollten nur dann ausgelöst werden, wenn der Aufrufer den Fehler in angemessener Weise beheben kann. Ungeprüfte Ausnahmen sollten für Programmierfehler verwendet werden.
- Um die API-Kontrolle aufrechtzuerhalten, sollten Ausnahmen niedriger Ebene in aussagekräftige Geschäftsausnahmen eingebettet werden.tracts sauber.
- InterruptedException wird in Multithread-Code niemals stillschweigend unterdrückt; stattdessen muss das Interrupt-Flag wiederhergestellt werden.







