Drei Arten von Ausnahmen in Java

Fehler sind das Problem von Anwendern und Programmierern. Entwickler wollen offensichtlich nicht, dass ihre Programme auf Schritt und Tritt umkippen, und Benutzer sind Fehler in Programmen mittlerweile so gewöhnt, dass sie widerwillig akzeptieren, den Preis für Software zu zahlen, die mit ziemlicher Sicherheit mindestens einen Fehler enthält. Java soll dem Programmierer eine sportliche Chance geben, eine fehlerfreie Anwendung zu entwickeln. Es gibt Ausnahmen, von denen der Programmierer weiß, dass sie eine Möglichkeit darstellen, wenn eine Anwendung mit einer Ressource oder einem Benutzer interagiert, und diese Ausnahmen können behandelt werden. Leider gibt es Ausnahmen, die der Programmierer nicht kontrollieren oder einfach übersehen kann. Kurz gesagt, alle Ausnahmen sind nicht gleich und daher gibt es mehrere Typen, über die ein Programmierer nachdenken muss.

Eine Ausnahme ist ein Ereignis, das dazu führt, dass das Programm nicht in der beabsichtigten Ausführung ausgeführt werden kann. Es gibt drei Arten von Ausnahmen: die geprüfte Ausnahme, die Fehler- und die Laufzeitausnahme.

Die geprüfte Ausnahme

Überprüfte Ausnahmen sind Ausnahmen, die eine Java-Anwendung bewältigen sollte. Wenn eine Anwendung beispielsweise Daten aus einer Datei liest, sollte sie in der Lage sein, die zu verarbeiten FileNotFoundException . Schließlich gibt es keine Garantie dafür, dass die erwartete Datei dort ist, wo sie sein soll. Auf dem Dateisystem könnte alles passieren, von dem eine Anwendung keine Ahnung hätte.

Um dieses Beispiel noch einen Schritt weiter zu führen. Angenommen, wir verwenden die FileReader Klasse zum Lesen einer Zeichendatei. Wenn Sie sich die FileReader-Konstruktordefinition in der Java-API ansehen, sehen Sie die Methodensignatur:

public FileReader (String fileName) löst FileNotFoundException aus 

Wie Sie sehen können, gibt der Konstruktor ausdrücklich an, dass das FileReader Konstruktor kann ein werfen FileNotFoundException. Dies ist sinnvoll, da es sehr wahrscheinlich ist, dass die Dateiname Die Zeichenfolge ist von Zeit zu Zeit falsch. Schauen Sie sich den folgenden Code an:

 public static void main (String [] args) FileReader fileInput = null; // Öffne die Eingabedatei fileInput = new FileReader ("Untitled.txt");  

Syntaktisch sind die Anweisungen korrekt, aber dieser Code wird niemals kompiliert. Der Compiler kennt das FileReader Konstruktor kann ein werfen FileNotFoundException und es liegt am aufrufenden Code, um diese Ausnahme zu behandeln. Es gibt zwei Möglichkeiten: Erstens können wir die Ausnahme von unserer Methode durch Angabe von a weitergeben wirft Klausel auch:

 public static void main (String [] args) löst FileNotFoundException FileReader fileInput = null aus; // Öffne die Eingabedatei fileInput = new FileReader ("Untitled.txt");  

Oder wir können tatsächlich mit der Ausnahme umgehen:

 public static void main (String [] args) FileReader fileInput = null; try // öffne die Eingabedatei fileInput = new FileReader ("Untitled.txt");  catch (FileNotFoundException ex) // den Benutzer anweisen, die Datei zu suchen 

Gut geschriebene Java-Anwendungen sollten in der Lage sein, geprüfte Ausnahmen zu bewältigen.

Fehler

Die zweite Art von Ausnahme ist als Fehler bekannt. Wenn eine Ausnahme auftritt, erstellt die JVM ein Ausnahmeobjekt. Diese Objekte stammen alle aus dem Wurfbar Klasse. Das Wurfbar Klasse hat zwei Hauptunterklassen- Error und Ausnahme. Das Error Klasse bezeichnet eine Ausnahme, mit der eine Anwendung wahrscheinlich nicht umgehen kann. 

Diese Ausnahmen gelten als selten. Zum Beispiel könnten der JVM die Ressourcen ausgehen, weil die Hardware nicht alle Prozesse bewältigen kann, mit denen sie zu kämpfen hat. Es ist möglich, dass die Anwendung den Fehler abfängt, um den Benutzer zu benachrichtigen. In der Regel muss die Anwendung jedoch geschlossen werden, bis das zugrunde liegende Problem behoben ist.

Laufzeit-Ausnahmen

Eine Laufzeitausnahme tritt einfach deshalb auf, weil der Programmierer einen Fehler gemacht hat. Sie haben den Code geschrieben, alles sieht für den Compiler gut aus, und wenn Sie den Code ausführen, stürzt er ab, weil er versucht hat, auf ein Element eines Arrays zuzugreifen, das nicht vorhanden ist, oder weil ein logischer Fehler dazu geführt hat, dass eine Methode aufgerufen wurde mit einem Nullwert. Oder eine beliebige Anzahl von Fehlern, die ein Programmierer machen kann. Aber das ist okay, wir erkennen diese Ausnahmen durch ausführliche Tests, richtig?