Mehrere Ausnahmen in Java auslösen
In diesem Tutorial wird gezeigt, wie Sie mehrere Ausnahmen in Java auslösen.
Ausnahmen sind die unerwünschten und unerwarteten Ereignisse, die den normalen Fluss der Anweisungen während der Ausführung des Programms stören. Die Wurzelklasse aller Java-Ausnahmen ist java.lang.Throwable
. Diese Klasse wird von Error- und Exception-Unterklassen geerbt.
Um Ausnahmen zu behandeln, verwenden wir die Blöcke try...catch
.
Im Block try
platzieren wir den Code, der eine Ausnahme auslösen kann. Der Block try
wird nicht alleine verwendet. Es muss immer entweder catch
oder finally
folgen. Der Block catch
wird verwendet, um die Ausnahme abzufangen. Auf diesen Block kann der finally-Block folgen. Der Block finally
wird verwendet, um den wichtigen Code des Programms auszuführen, unabhängig davon, ob eine Ausnahme vorliegt oder nicht.
In Java müssen wir möglicherweise mit mehreren Ausnahmen umgehen. Es ist nicht möglich, zahlreiche Ausnahmen in Java auszulösen. Wir können mehrere Ausnahmen angeben, aber nur eine davon wird ausgelöst.
Wir haben jedoch einige Alternativen, die wir verwenden können, um das Auslösen mehrerer Ausnahmen zu simulieren.
Wir können verkettete Ausnahmen verwenden, um mit mehreren Ausnahmen umzugehen. Solche Ausnahmen weisen darauf hin, dass die ausgelöste Ausnahme durch eine andere Ausnahme verursacht wird.
Zum Beispiel,
public class Main {
public static void main(String[] args) {
try {
NumberFormatException ex = new NumberFormatException("NumberFormatException is thrown");
ex.initCause(new NullPointerException("NullPointerException is the main cause"));
throw ex;
}
catch (NumberFormatException ex) {
System.out.println(ex);
System.out.println(ex.getCause());
}
}
}
Ausgabe:
java.lang.NumberFormatException: NumberFormatException is raised
java.lang.NullPointerException: NullPointerException is the main cause
Beachten Sie die Verwendung der Methoden initCause()
und getCause()
. Die Funktion initCause()
setzt die Ausnahmeursache als weitere Ausnahme und getCause()
gibt die Ursache der Ausnahme zurück, in unserem Fall NullPointerException
.
Wir können auch unterdrückte Ausnahmen verwenden. Hier fügen wir unterdrückte Ausnahmen an die primäre Ausnahme an. Es wurde in Java 7 hinzugefügt.
Um unterdrückte Ausnahmen anzuhängen, verwenden wir die Funktion addSuppressed()
. Wir verwenden diese Funktion mit dem Hauptausnahmeobjekt.
Zum Beispiel,
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
try {
Exception suppressed = new NumberFormatException();
Exception suppressed2 = new NullPointerException();
final Exception exe = new Exception();
exe.addSuppressed(suppressed);
exe.addSuppressed(suppressed2);
throw exe;
}
catch (Throwable e) {
Throwable[] suppExe = e.getSuppressed();
System.out.println("Suppressed:");
for (int i = 0; i < suppExe.length; i++) {
System.out.println(suppExe[i]);
}
}
}
}
Ausgabe:
Suppressed:
java.lang.NumberFormatException
java.lang.NullPointerException
Im obigen Beispiel haben wir zwei Ausnahmen an das Hauptobjekt angehängt und die unterdrückten Ausnahmen gedruckt. Um alle unterdrückten Ausnahmen zu erhalten, verwenden wir die Funktion getSuppressed()
.
Verwandter Artikel - Java Exception
- Ausnahme bei ungültiger Eingabe in Java
- Ausnahme im Hauptthread Java.Util.NoSuchElementException: Keine Zeile gefunden
- Ausnahme im Thread AWT-EventQueue-0 java.lang.NullPointerException
- Beheben Sie die Java.Net.BindException: Adresse wird bereits verwendet: Bind
- Der Java-Gateway-Prozess wurde beendet, bevor seine Portnummer gesendet wurde
- Java Throwable vs. Ausnahmeklasse