Erfahren Sie in diesem Java Exceptions-Tutorial, was eine Ausnahme in Java ist, was eine geprüfte Ausnahme ist und wie sie sich von einer unchecked exception unterscheidet. Wir werden auch einige Best Practices rund um Java Checked Exceptions lernen.
Table of Contents1. What is an exception in Java?2. Checked vs unchecked exceptions in Java3. Java exception handling best practices
Was ist eine Ausnahme in Java?
“ Eine Ausnahme ist ein unerwartetes Ereignis, das während der Ausführung eines Programms auftritt, das den normalen Befehlsfluss stört.,“
In Java werden alle Fehler und Ausnahmen mit der Throwable-Klasse dargestellt. Wenn innerhalb einer Methode ein Fehler auftritt, erstellt die Methode ein Objekt (eines beliebigen Untertyps von Throwable
) und übergibt es an das Laufzeitsystem. Das Objekt, ein Ausnahmeobjekt genannt.
Exception Objekt enthält Informationen über den Fehler, einschließlich seines Typs und den Status des Programms, wenn der Fehler aufgetreten ist. Das Erstellen eines Ausnahmeobjekts und das Übergeben an das Laufzeitsystem wird als Auslösen einer Ausnahme bezeichnet.
1.1., Ausnahmebehandlung
Wir haben zwei Möglichkeiten, wenn ein Ausnahmeobjekt in unserer Anwendung erstellt wird.
- Entweder behandeln wir es innerhalb der Methode
- Oder wir können es an die Aufrufermethode übergeben, damit es verarbeitet wird.
Dies ist eine sehr wichtige Entscheidung, die getroffen werden muss, während die Verantwortlichkeiten einer Methode festgelegt werden. Eine Methode sollte deutlich zeigen,dass, was alle außergewöhnlichen Szenarien wird es behandeln und die es nicht. Es wird in der Methodensyntax mithilfe der throws Klausel definiert.
Um die Ausnahme zu behandeln, müssen wir die Ausnahme im catch-Abschnitt des try-catch-Blocks abfangen.,
If an exception is not handled in the application, then it will propagate to JVM and JVM will usually terminate the program itself.
Checked vs unchecked exceptions in Java
2.1. Exception Hierarchy
In Java, exceptions are broadly categorized into two sections: checked exceptions and unchecked exceptions.
2.2. Checked Exceptions
Java forces you to handle these error scenarios in some manner in your application code., Sie werden sofort in Ihr Gesicht kommen, sobald Sie mit dem Kompilieren Ihres Programms beginnen. Sie können sie definitiv ignorieren und an JVM übergeben, aber es ist schlechte Angewohnheit. Idealerweise müssen Sie diese Ausnahmen auf einer geeigneten Ebene in Ihrer Anwendung behandeln, damit Sie den Benutzer über Fehler informieren und ihn bitten können, es später erneut zu versuchen/ zu kommen.
Im Allgemeinen bezeichnen geprüfte Ausnahmen Fehlerszenarien, die außerhalb der unmittelbaren Kontrolle des Programms liegen. Sie treten normalerweise bei der Interaktion mit externen Ressourcen / Netzwerkressourcen auf, z. B. Datenbankprobleme, Netzwerkverbindungsfehler, fehlende Dateien usw.,
Checked exceptions are subclasses of Exception class.
Example of checked exceptions are : ClassNotFoundException, IOException, SQLException and so on.
Checked Exception Example
FileNotFoundException
is a checked exception in Java. Anytime, we want to read a file from filesystem, Java forces us to handle error situation where file may not be present in place.
public static void main(String args) { FileReader file = new FileReader("somefile.txt");}
In above case, you will get compile time error with message – Unhandled exception type FileNotFoundException
.,
Um das Programm kompilieren zu können, müssen Sie diese Fehlersituation im Block try-catch
behandeln. Der unten angegebene Code wird absolut einwandfrei kompiliert.
2.3. Unchecked Exceptions
Java bietet auch UncheckedExceptions, deren Vorkommen nicht vom Compiler überprüft werden. Sie werden zum Leben erweckt/in Ihr Programm aufgenommen, sobald ein fehlerhafter Code ausgeführt wird.
Eine Methode wird vom Compiler nicht gezwungen, die nicht aktivierten Ausnahmen zu deklarieren, die von ihrer Implementierung ausgelöst werden. Im Allgemeinen deklarieren solche Methoden sie fast immer nicht.,
Unchecked Exceptions sind Unterklassen von RuntimeException. Beispiel für ungeprüfte Ausnahmen sind : ArithmeticException
, ArrayStoreException
, ClassCastException
und so weiter.
RuntimeException
selbst Unterklasse von Exception
ist, dh alle nicht markierten Ausnahmeklassen sollten implizit überprüft worden sein Ausnahmen, ABER sie sind es nicht.“Unchecked Exception-Beispiel
Kasse den angegebenen code unten. Der obige Code gibt keinen Kompilierungsfehler aus., Aber wenn Sie das Beispiel, es wirft NullPointerException
. NullPointerException ist eine nicht aktivierte Ausnahme in Java.
Denken Sie daran, dass der größte Unterschied zwischen geprüften und nicht geprüften Ausnahmen darin besteht, dass überprüfte Ausnahmen vom Compiler erzwungen und verwendet werden, um außergewöhnliche Bedingungen anzuzeigen, die außerhalb der Kontrolle des Programms liegen (z. B. E/A-Fehler), während ungeprüfte Ausnahmen zur Laufzeit auftreten und verwendet werden, um Programmierfehler anzuzeigen (z. B. einen Nullzeiger).,
Java exception handling best practices
- Geprüfte Ausnahmen können verwendet werden, wenn eine Methode nicht tun, was sein name sagt, es tut. zB kann eine Methode namens prepareSystem (), die Konfigurationsdateien vorfüllt und einige Konfigurationen mit ihnen durchführt, das Werfen von
FileNotFoundException
deklarieren, was impliziert, dass die Methode Konfigurationsdateien aus dem Dateisystem verwendet. - Überprüfte Ausnahmen sollten idealerweise niemals für Programmierfehler verwendet werden, sondern unbedingt für Ressourcenfehler und für die Flusskontrolle in solchen Fällen.,
- Werfen Sie nur die Ausnahmen, die eine Methode mit keinem Mittel behandeln kann. Methode sollte zuerst versuchen, es zu behandeln, sobald es aufstößt. Werfen Sie die Ausnahme nur, wenn es nicht möglich ist, innerhalb Methode zu behandeln.
- Eine gute Möglichkeit, Methodensignaturen zu definieren, besteht darin, Ausnahmen in der Nähe des Methodennamens zu deklarieren. Wenn Ihre Methode
openFile
heißt, wird erwartet, dassFileNotFoundException
?. Wenn Ihre MethodefindProvider
, wird erwartet, dassNoSuchProviderException
.,Außerdem sollten diese Art von Ausnahmen zu Ausnahmen gemacht werden, da dies den Aufrufer zwingt, sich mit den Problemen zu befassen, die der Semantik Ihrer Methoden innewohnen.
- Regel ist, wenn ein Client vernünftigerweise erwartet werden kann, sich von einer Ausnahme zu erholen, machen Sie es zu einer geprüften Ausnahme. Wenn ein Client nichts tun kann, um die Ausnahme wiederherzustellen, machen Sie sie zu einer nicht aktivierten Ausnahme.
In Wirklichkeit müssen die meisten Anwendungen so ziemlich alle Ausnahmen wiederherstellen, einschließlich
NullPointerException
,IllegalArgumentExceptions
und viele andere ungeprüfte Ausnahmen., Die fehlgeschlagene Aktion / Transaktion wird abgebrochen, aber die Anwendung muss am Leben bleiben und bereit sein, die nächste Aktion / Transaktion auszuführen.Das einzige Mal, dass es normalerweise legal ist, eine Anwendung herunterzufahren, ist während des Startvorgangs. Wenn beispielsweise eine Konfigurationsdatei fehlt und die Anwendung ohne sie nichts Sinnvolles tun kann, ist es legal, die Anwendung herunterzufahren.,
Schlussfolgerung
In diesem Beitrag haben wir den Unterschied zwischen geprüften und ungeprüften Ausnahmen in Java sowie den Umgang mit ungeprüften Ausnahmen und die Ausnahmehierarchie in Java mit Beispielen gelernt.
Fühlen Sie sich frei, Ihre Fragen in den Kommentaren fallen.
Glückliches Lernen !!,
- Asynchronous and synchronous exceptions
- exception handling using inner classes
- exception handling best practices
- effectively handle NullPointerException
- Custom exceptions in Java
- Java exception doc
Leave a Reply