Skip to Content

Java-Ausnahmen deklarieren und werfen

Werfen von Ausnahmen

Java erlaubt nicht nur die vom Laufzeitsystem erzeugten Ausnahmen zu behandeln. Java erlaubt es auch selbst Ausnahmen zur Erzeugen. Dies geschieht durch das Erzeugen einer Instanz einer Klasse die aus der Klasse Throwable abgeleitet ist. Im folgenden Beispiel geschieht dies, in dem vor einer Division auf eine mögliche Division durch Null geprüft wird :

package Kurs2.Exception;

import java.lang.IllegalArgumentException;

public class Grundrechenarten {
public static int division(int a, int b) {
IllegalArgumentException ex;
if (b==0) {
ex = new IllegalArgumentException("Division durch 0!");
throw ex;
}
return a/b;
}

public static void main(String[] args) {
int c = division(3,0);
}

}

Das Werfen einer eigenen Ausnahme erfolgt in zwei Schritten:

  • Dem Erzeugen einer Instanz der Ausnahmeklasse. Hier kann ein Text mit Informationen im Konstruktor mitgegeben werden.
  • Dem Werfen der Ausnahme mit dem Schlüsselwort throw und der Angabe eines Ausnahmeobjekts

Beim Ausführen des oben gezeigten Programms wird die folgende Meldung ausgegeben:

Exception in thread "main" java.lang.IllegalArgumentException: Division durch 0!
at Kurs2.Exception.Grundrechenarten.division(Grundrechenarten.java:9)
at Kurs2.Exception.Grundrechenarten.main(Grundrechenarten.java:16)

Da das Ausnahmeobjekt in der Regel nicht weiter oder wieder verwendet wird, kann man das Erzeugen des Objekts direkt mit dem Werfen der Ausnahme verbinden:

throw new IllegalArgumentException("Division durch 0!");

Selbstimplementierte Ausnahmeklassen

Java erlaubt auch das Implementieren eigener Ausnahmeklasse. Man kann zum Beispiel die Klasse IllegalArgumentException zu einer eigenen Klasse ableiten:

package Kurs2.Exception;

public class DivisionException extends IllegalArgumentException {
int dividend;
int divisor;

public DivisionException(int a, int b) {
super ("Versuch von Division " + a + "/" + b);
dividend =a;
divisor = b;
}
}

Das Hauptprogramm muss entsprechend angepasst werden:

package Kurs2.Exception;

import java.lang.IllegalArgumentException;

public class Grundrechenarten {

public static int division2(int a, int b) {
DivisionException ex;
if (b==0) {
ex = new DivisionException(a,b);
throw ex;

}
return a/b;
}

public static void main(String[] args) {
int c = division2(3,0);
}

}

Es wird dann eine angepasste Fehlermeldung geworfen:

Exception in thread "main" Kurs2.Exception.DivisionException: Versuch von Division 3/0
at Kurs2.Exception.Grundrechenarten.division2(Grundrechenarten.java:18)
at Kurs2.Exception.Grundrechenarten.main(Grundrechenarten.java:25)
Java Result: 1

 



book | by Dr. Radut