1. throwBetreiber

Wenn eine Ausnahme von einem Block abgefangen wird catchund 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 throwOperator verwenden:

throw exception;

Beispiel:

Code Konsolenausgabe
try
{
   int d = 2/0;
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

In diesem Code haben wir eine Ausnahme abgefangen, eine entsprechende Meldung auf dem Bildschirm angezeigt und sie dann erneut ausgelöst.

catchEine 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 Exceptionoder eine Klasse, die es erbt. Und wirf es.

Es ist einfacher als es klingt. Beispiel:

Code Konsolenausgabe
try
{
   throw new RuntimeException();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

Im obigen Beispiel haben wir ein neues Ausnahmeobjekt vom Typ erstellt RuntimeExceptionund es sofort mit dem throwOperator ausgelöst.

Es wird sofort vom catchBlock abgefangen, da RuntimeException erbt Exception. Der catch (Exception except)Code fängt Ausnahmeobjekte aller Klassen ab, die die ExceptionKlasse erben.



3. finallySchlü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
}

finallyUm diese obligatorischen Aktionen auszuführen, wurde dem Konstrukt eine andere Art von Block ( ) hinzugefügt try-catch, wodurch das try-catch-finallyKonstrukt 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 finallyBlock wird in jedem Fall ausgeführt, unabhängig davon, ob eine Ausnahme vorliegt. Selbst wenn eine Ausnahme ausgelöst und nicht abgefangen wird, finallywird der Block dennoch ausgeführt.

Wenn Sie übrigens keine Ausnahme abfangen möchten, aber einen finallyBlock benötigen, verwenden Sie die Kurzschreibweise für das try-catch-finallyKonstrukt: einen try-finallyBlock. Es sieht ungefähr so ​​aus:

try
{
   // Code where an exception might occur
}
finally
{
   // Code that must executed no matter what happens
}