1. throw
Betreiber
Wenn eine Ausnahme von einem Block abgefangen wird catch
und bis sie an die Java-Maschine geworfen wird, ist sie nur ein Objekt, das erbt Exception
(oder besser gesagt Throwable
). Das Ausnahmeobjekt selbst hat keine magischen Eigenschaften.
Die gesamte Logik, wie Ausnahmen funktionieren, ist nur eine besondere Art und Weise, wie sich die Java-Maschine verhält, wenn eine Ausnahme an sie geworfen wird.
Sie können eine abgefangene Ausnahme jederzeit erneut an die Java-Maschine auslösen. Dazu müssen Sie den throw
Operator verwenden:
throw exception;
Beispiel:
Code | Konsolenausgabe |
---|---|
|
|
In diesem Code haben wir eine Ausnahme abgefangen, eine entsprechende Meldung auf dem Bildschirm angezeigt und sie dann erneut ausgelöst.
catch
Eine erneut ausgelöste Ausnahme kann nicht von anderen Blöcken im selben Block abgefangen werden try
.
2. Ihre Ausnahmen
Übrigens können Sie selbst ein Ausnahmeobjekt erstellen: Es handelt sich lediglich um ein Objekt vom Typ Exception
oder eine Klasse, die es erbt. Und wirf es.
Es ist einfacher als es klingt. Beispiel:
Code | Konsolenausgabe |
---|---|
|
|
Im obigen Beispiel haben wir ein neues Ausnahmeobjekt vom Typ erstellt RuntimeException
und es sofort mit dem throw
Operator ausgelöst.
Es wird sofort vom catch
Block abgefangen, da RuntimeException erbt Exception
. Der catch (Exception except)
Code fängt Ausnahmeobjekte aller Klassen ab, die die Exception
Klasse erben.
3. finally
Schlüsselwort
Ein weiterer wichtiger Punkt. Manchmal muss ein Programmierer eine Aktion ausführen, unabhängig davon, ob im Code eine Ausnahme aufgetreten ist. Angenommen, wir haben eine Datei zum Schreiben geöffnet. Die geöffnete Datei muss durch Aufruf geschlossen werden close()
.
try
{
// Code where an exception might occur
}
catch(ExceptionType name)
{
// Exception handling code
}
finally
{
// Code that must executed no matter what happens
}
finally
Um diese obligatorischen Aktionen auszuführen, wurde dem Konstrukt eine andere Art von Block ( ) hinzugefügt try-catch
, wodurch das try-catch-finally
Konstrukt erstellt wurde. Es sieht aus wie das:
Beispiel:
FileInputStream source = null;
try
{
source = new FileInputStream("c:\\note.txt");
source.read();
}
catch(Exception except)
{
System.out.println("Caught the exception");
throw except;
}
finally
{
if (source != null)
source.close();
}
Der Code im finally
Block wird in jedem Fall ausgeführt, unabhängig davon, ob eine Ausnahme vorliegt. Selbst wenn eine Ausnahme ausgelöst und nicht abgefangen wird, finally
wird der Block dennoch ausgeführt.
Wenn Sie übrigens keine Ausnahme abfangen möchten, aber einen finally
Block benötigen, verwenden Sie die Kurzschreibweise für das try-catch-finally
Konstrukt: einen try-finally
Block. Es sieht ungefähr so aus:
try
{
// Code where an exception might occur
}
finally
{
// Code that must executed no matter what happens
}
GO TO FULL VERSION