Eine Ausnahme tritt auf, wenn eine anormale Situation (z. B. ein Fehler oder ein Problem ) vor, dass ein Verfahren nicht in der Lage zu handhaben ist. Die Methode beendet durch " werfen " eine Ausnahme , die Kommunikation mit der aufrufenden Funktion , dass das Verfahren beendet ist ungewöhnlich , und vorbei wieder Informationen über die Bedingungen der Situation. Diese Information ist in der Ausnahme-Objekt zurück an die aufrufende Funktion geworfen gekapselt. Grundlegende Ausnahmen
Java bietet drei grundlegende Arten von Ausnahmen : . Geprüfte Ausnahmen , Fehler und Runtime- Ausnahmen
überprüft Ausnahmen werden für erwartete Probleme, die vernünftigerweise behandelt , wie eine Anfrage geworfen für eine nicht vorhandene Datei . Geprüft Ausnahmen müssen abgefangen und entweder behandelt von der aufrufenden Funktion oder bis zu einer höheren Berufung Funktion geworfen . Diese Anforderung wird bezeichnet als die "Catch oder Geben Voraussetzung . " Alle geprüften Ausnahmen werden von der Klasse Exception abgeleitet.
Fehler werden ausgelöst, wenn ein schwerwiegender Fehler außerhalb der Anwendung auftreten, die nicht angemessen behandelt werden , wie aus der Erinnerung und Stack-Überlauf Fehler . Alle Fehler werden aus der Klasse Fehler abgeleitet.
Runtime Ausnahmen ausgelöst werden , wenn ein schwerwiegender Fehler in der Anwendung auftreten, die nicht angemessen behandelt werden , wie illegale Argumente und Parameter . Alle Laufzeit Ausnahmen von der RuntimeException -Klasse abgeleitet.
Fehler und Runtime- Ausnahmen sind beide ungeprüfte Ausnahmen . Ungeprüfte Ausnahmen unterliegen nicht der Fang oder Geben Sie Requirement weil anmutig Erholung von diesen Arten von Ausnahmen nicht zu erwarten.
Klassen Exception , Fehler und RuntimeException alle aus Klasse Throwable abgeleitet. Von Throwable , erben diese Klassen nützliche Funktionen für die Berichterstattung und Debugging- Fehler . Zum Beispiel liefert die getMessage lesbare Fehlermeldung mit der Ausnahme zugeordnet ist , und druckt printStackTrace detaillierte Informationen zu einem bestimmten Stream oder Schriftsteller. Sie können Ihre eigenen, spezialisierten Ausnahmen durch Vererbung von Exception , RuntimeException oder deren Unterklassen erstellen.
Specialty Ausnahmen
Java bietet zahlreiche Exception-Klassen von den grundlegenden Klassen abgeleitet. Specialized Ausnahmen können zusätzliche Funktionen für die Beschaffung von Informationen für die jeweilige Situation bieten . Zum Beispiel kann Java Database Connectivity -Funktionen werfen eine SQLException . Diese spezielle Ausnahme verfügt über Funktionen zum Abrufen von Informationen über den SQL-Status und herstellerspezifischen Fehlercode im Zusammenhang mit der Ausnahme. Fangen und ggf. spezifische Ausnahmen können Sie eine Fülle von zusätzlichen Informationen nicht zur Verfügung, wenn Sie nur abfangen und behandeln die generischen Eltern- Klasse Ausnahmen zugreifen
Handhabung Ausnahmen: . Versuchen Sie , catch, finally
Nutzen try, catch und finally-Blöcke zu fangen und behandeln Ausnahmen. Zeigen Sie Code, der eine Ausnahme in der try-Block werfen könnte . Geben Sie einen catch-Block , um jede mögliche Ausnahme zu behandeln , mit dem Auftrag, die Ausnahme von der Art der Ausnahme und die Informationen die Ausnahme vorsieht behandeln. Umgang mit der Ausnahme könnte beinhalten Alarmierung der Benutzer über den Fehler und fordert korrekte Benutzereingaben automatisch erholt sich von dem Fehler oder eine Ausnahme bis zu einem höheren Niveau. Kodex in der finally-Block immer ausgeführt, wenn der try-Block verlassen wird , ob es sich in der Regel verlassen oder eine Ausnahme gefangen wurde.
In diesem einfachen Beispiel , versucht die Anwendung, um eine Datei zu öffnen und zu verarbeiten. Wenn eine Ausnahme abgefangen wird, wird einige Informationen zur Ausnahme gedruckt , und die Ausführung wird fortgesetzt . Schließlich reinigt die Anwendung durch Schließen des Datei-Stream ggf.
FileReader fr = null; . Try { fr = new FileReader ( " myfile.txt "); ... (Code zu lesen und zu verarbeiten, die Datei ) ... } catch ( FileNotFoundException ex) { System.out.println ( ex.getMessage ()); } catch ( IOException ex) { System.out.println ( ex.getMessage () ); } finally {if (fr = null) fr.close (); ! }
Auslösen von Ausnahmen
Um Ausnahmen von einer Funktion zu werfen, geben Sie dies mit dem throws-Klausel in der Funktion Erklärung , die eine Liste von Ausnahmen , die ausgelöst werden können . Zum Beispiel:
nichtig getData () throws IOException , FileNotFoundException {
Eine Ausnahme geworfen wird mit einem " Ball "-Anweisung. A gefangen oder erstellt Ausnahme geworfen werden kann . Zum Beispiel:
nichtig getData () wirft SomeOtherException , FileNotFoundException { FileReader fr = null; try { fr = new FileReader ( " myfile.txt "); ... (Code zu lesen und zu verarbeiten, die Datei ) ... } catch ( FileNotFoundException ex) {throw ex ; } catch ( IOException ex) { throw new SomeOtherException (ex) ;} finally { if (! fr = null) fr.close ( );}}