Grundlegendes zur Ausnahmehierarchie in Java erklärt
Veröffentlicht: 2022-03-08Der Begriff „Ausnahme“ ist die Abkürzung für „außergewöhnliches Ereignis“. In Java ist eine Ausnahme im Wesentlichen ein Ereignis, das während der Ausführung eines Programms auftritt und den normalen Ablauf des Programms unterbricht. Ausnahmen sind unerwünscht und meist unerwartet, die im Allgemeinen entweder zur Laufzeit oder zur Kompilierzeit auftreten. Alle diese Ausnahmen müssen behandelt werden, um sicherzustellen, dass das Programm in seinem natürlichen Fluss läuft.
Bevor Sie jedoch mit Ausnahmen umgehen, wäre es hilfreich zu wissen, welche verschiedenen Arten von Ausnahmen in Java vorhanden sind. Sehen wir uns in diesem Artikel die verschiedenen Arten von Ausnahmen in Java und die Ausnahmehierarchie an, der sie folgen.
Inhaltsverzeichnis
Ausnahmehierarchie in Java
Die Hierarchie der Ausnahmen in der Programmiersprache Java beginnt mit der Throwable-Klasse – die von der Object-Klasse stammt und ihre direkte Unterklasse ist, während die Exception-Klasse alle darstellt. Diese Throwable-Klasse verzweigt sich weiter in zwei Unterklassen – Error und Exception. Hier ist ein Flussdiagramm zum besseren Verständnis der Java-Ausnahmehierarchie:
Die Exception-Klasse präsentiert alle Ausnahmen, die Sie möglicherweise behandeln müssen, während Sie mit der Programmiersprache Java arbeiten. Einige allgemein bekannte und anzutreffende Beispiele für solche Ausnahmen sind NullPointerException, ClassNotFoundException, IllegalArgumentException usw.
Andererseits kümmert sich die Error-Klasse um schwerwiegendere Probleme in Ihrer Java-Programmarchitektur und nicht innerhalb des Anwendungscodes. Einige Beispiele für Fehler in Java sind InternalError, AssertionError, OutOfMemoryError usw.
Ausnahmen in Java werden weiter in zwei Kategorien unterteilt:
- Geprüfte Ausnahmen – Diese werden auch als Ausnahmen zur Kompilierzeit bezeichnet.
- Ungeprüfte Ausnahmen – Diese werden auch als Laufzeitausnahmen bezeichnet.
Ein wichtiger Punkt, der an dieser Stelle zu beachten ist, ist, dass ungeprüfte Ausnahmen alle Unterklassen der RuntimeException-Klasse sind. Wir werden später in diesem Artikel mehr über aktivierte und nicht aktivierte Ausnahmen sprechen. Aber vorher schauen wir uns im Wesentlichen an, wie sich Fehler und Ausnahmen in ihrer Funktionsweise unterscheiden, damit es keine Verwirrung gibt.
Fehler und Ausnahmen in Java – wie unterscheiden sie sich?
Die offizielle Dokumentation der Java-Programmiersprache bezieht sich auf Fehler als Vorkommnisse während Ihrer Java-Programmierung, die – „auf ernsthafte Probleme hinweisen, die eine vernünftige Anwendung nicht zu fangen versuchen sollte“. Die Schwere von Fehlern wird aus der Art und Weise deutlich, wie diese Aussage aufgestellt ist. Dies bezieht sich eindeutig auf die Reihe von Problemen, mit denen Ihr Programm möglicherweise konfrontiert ist und die es nicht beheben kann, ohne entweder den Code umzugestalten oder die Java-Anwendungsarchitektur zu ändern.
Schauen wir uns eine Java-Methode an, die einen Fehler ausgeben wird:
öffentlicher statischer Leerdruck (String S) {
Druck(e);
}
In dem oben erwähnten Code fungiert die Methode print() als rekursive Methode, die sich immer wieder selbst aufruft, bis sie die maximal zulässige Größe für einen Thread-Stack in Java erreicht. An diesem Punkt wird die Ausführung mit einem sehr häufigen – StackOverflowError beendet, der in etwa so lautet:
Ausnahme im Thread „main“ java.lang.StackOverflowError
bei StackOverflowErrorExample.print(StackOverflowErrorExample.java:3)
Wie das obige Beispiel zeigt, wirft die Methode ein Beispiel, aber dieser Fehler kann nicht im Code selbst behandelt werden. Das Programm bricht also einfach die Ausführung ab, da der Schaden nicht behebbar ist. Als Lösung muss der Code geändert werden.
Im Gegensatz zu Fehlern zeigen Ausnahmen Bedingungen an, die von einer vernünftigen Anwendung abgefangen werden können. Ausnahmen in Java umfassen Probleme, die entweder zur Kompilierzeit oder während der Laufzeit auftreten können. Diese Ausnahmen treten in allen Anwendungen ziemlich häufig auf – insbesondere während der Test- und Debugging-Phase. Daher können Ausnahmen in Java innerhalb des Programms selbst behandelt werden, um sicherzustellen, dass der Code seinen natürlichen Ablauf ausführt.
Lassen Sie uns nun etwas mehr über die Ausnahmehierarchie in Java sprechen, indem wir uns ansehen, was geprüfte und ungeprüfte Ausnahmen sind.
Geprüfte und ungeprüfte Ausnahmen in Java
Wie bereits erwähnt, können Ausnahmen in einem Java-Programm entweder während der Kompilierzeit oder während der Laufzeit auftreten. Dies gibt uns die zwei großen Arten von Ausnahmen, die in Java vorhanden sind. Hier sehen wir uns diese beiden Ausnahmen im Detail an.
Ausnahmen zur Kompilierzeit
Ausnahmen, die zur Kompilierzeit auftreten, werden als Kompilierzeitausnahmen bezeichnet. Diese werden auch als geprüfte Ausnahmen bezeichnet, da Sie sie explizit in Ihrem Java-Programm prüfen und im Code selbst behandeln müssen. Klassen wie InterruptedException, IOException und mehr sind geprüfte Ausnahmen.
Schauen wir uns eine Methode an, die eine geprüfte Ausnahme behandeln kann:
public void writeAFile() {
try (BufferedWriter b_w = new BufferedWriter(new FileWriter(“myFile.txt”))) {
b_w.write("Testen");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
Wie Sie sehen können, enthält der try-Block des obigen Codes zwei Anweisungen:
- Instanziieren des Objekts – BufferedWriter
- Verwenden des Objekts zum Schreiben in die Datei
Diese beiden Anweisungen können IOException auslösen. IOException muss als geprüfte Ausnahme entweder vom Aufrufer oder von der Methode behandelt werden. Im obigen Beispiel sehen Sie, wie die Ausnahme innerhalb der Methode selbst behandelt wird.
Laufzeitausnahmen
Im Gegensatz zu Ausnahmen zur Kompilierzeit, die während der Kompilierzeit geworfen werden, können Laufzeit- oder ungeprüfte Ausnahmen „jederzeit“ geworfen werden, was im Wesentlichen zur Laufzeit bedeutet. Daher müssen Methoden nicht explizit Catch-and-Throw-Blöcke verwenden, um diese ungeprüften Ausnahmen zu behandeln. Zu den Klassen, die ungeprüfte Laufzeitausnahmen erben, gehören – NullPointerException, ArithmeticException usw.
Sehen wir uns einen Java-Code an, der eine ungeprüfte NullPointerException-Ausnahme auslöst und im Gegensatz zu früher nicht im Code behandelt wird. Hier ist es:
public void writeToFile() {
try (BufferedWriter b_w = null) {
b_w.write("Test");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
Wenn Sie die obige Methode aufrufen, löst das Programm eine NullPointerException aus, da das BufferedWriter-Objekt null ist. So würde die Ausnahme lauten:
Ausnahme im Thread "main" java.lang.NullPointerException
bei IOExceptionExample.writeToFile(IOExceptionExample.java:10)
bei IOExceptionExample.main (IOExceptionExample.java:17)
Abschließend
Damit kommen wir zum Ende dieses Blogs zum Verständnis der Ausnahmehierarchie in Java. Bitte beachten Sie, dass dies keineswegs eine umfassende Behandlung von Ausnahmen in Java und deren Handhabung ist. Dafür sollten Sie tiefer graben und sich verschiedenen möglichen Ausnahmen aussetzen, um zu sehen, wie sie funktionieren. Die Kenntnis der Ausnahmebehandlung bereitet Sie auf eine erfolgreiche Karriere als Full-Stack-Entwickler vor, da Ausnahmen die Grundlagen jeder Anwendung bilden.
Bei upGrad haben wir einen spezialisierten Full-Stack-Entwicklungskurs – Executive PG Program in Software Development – Specialization in Full Stack Development – in dem wir Sie durch alle Nuancen der Softwareentwicklung führen, indem wir uns hauptsächlich auf die Full Stack-Entwicklung konzentrieren. Wir empfehlen Ihnen, sich den Kurs anzusehen und wahrscheinlich bald einen Platz zu buchen!
1. Welche Klasse befindet sich ganz oben in der Ausnahmehierarchie in Java?
Die Throwable-Klasse steht an der Spitze der Ausnahmehierarchie in Java.
2. Welche Arten von Ausnahmen gibt es in Java?
Java hat sowohl ungeprüfte als auch geprüfte Ausnahmen. Geprüfte Ausnahmen werden auch als Ausnahmen zur Kompilierzeit bezeichnet, während ungeprüfte Ausnahmen auch als Laufzeitausnahmen bezeichnet werden.
3. Wie werden Ausnahmen in Java behandelt?
Try-Catch ist der einfachste Weg, Ausnahmen in Java zu behandeln. Der Hauptcode, den Sie ausführen möchten, muss in den try-Block eingefügt werden, während ein oder mehrere catch-Blöcke alle Ausnahmen abfangen, die der Code auslöst. Diese Methode erkennt alle Arten von Java-Ausnahmen, die ausgelöst werden.