Exceptions

Werbung
Ausnahmenbehandlung in Java
Dr. Horst Treiblmaier
Abteilung für Wirtschaftsinformatik
WU Wien
Was sind Exceptions?
n
n
n
Eine Ausnahme (Exception) ist ein Objekt
einer Unterklasse von Throwable
Eine Ausnahme tritt dann auf, wenn bei der
Programmausführung eine semantische Regel
verletzt wird. (z.B. x[-4], Division durch 0)
In manchen Fällen kann man Exceptions
durch if ... else abfangen, allerdings ergibt
sich daraus ein hoher Programmieraufwand
Exception Handling
n
n
n
Zur Laufzeit wird eine Ausnahme erzeugt die
in einem Ausnahmebehandler (Exception
Handler) aufgefangen und bearbeitet wird
Ein Block um alle "kritischen Stellen" reicht
Nach einem Sprung in den
Ausnahmebehandler wird nicht mehr
zurückgesprungen
Beispiel 1
public class Exception1 {
public static void main (String args[]) {
int[] feld = new int[100];
for (int i=0; i<=99; i++) {
feld[i] = i;
}
Zuweisung
for (int i = 0; i <= 99; i++) {
System.out.println("i = " + feld[i]);
}
}
}
Ausgabe
Beispiel 1
public class Exception2 {
public static void main (String args[]) {
int[] feld = new int[100];
for (int i=0; i<=99; i++) {
feld[i] = i;
}
Fehler
for (int i = 0; i <= 100; i++) {
System.out.println("i = " + feld[i]);
}
}
}
Der Interpreter (nicht der Compiler!) bricht die Ausführung ab
Beispiel 1
public class Exception3 {
public static void main (String args[]) {
int[] feld = new int[100];
try {
for (int i=0; i<=99; i++) {
feld[i] = i;
}
try-Block
for (int i = 0; i <= 100; i++) {
System.out.println("i = " + feld[i]);
}
catch-Block
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Fehler!");
}
System.out.println("Hier geht es ganz normal weiter");
}
}
Das Programm wird ausgeführt!
ExceptionBeispiel1 Angabe
Aufgabe: Schreiben Sie ein Programm "ExceptionBeispiel1"
das in einer for-Schleife mit einer int-Zählvariablen von 10
bis –10 rückwärts zählt. In der Schleife wird die Zahl 100
durch den Zählwert dividiert und ausgegeben. Um die
Division durch Null abzufangen verwenden Sie die
Ausnahme "ArithmeticException".
ExceptionBeispiel1 Lösung
public class ExceptionBeispiel1 {
public static void main (String args[]) {
try {
for (int i = 10; i >= -10; i--) {
System.out.println(100/i);
}
}
catch (ArithmeticException e) {
System.out.println("Das geht nicht");
}
}
}
throws
n
n
n
Anstatt eine Mehthode mit try – catch zu
behandeln ist auch eine Weiterleitung mit
dem Schlüsselwort throws möglich.
Dieses leitet die Verantwortung für die
Behandlung der Ausnahme an die aufrufende
Methode weiter.
Beispiel einer Methodendeklaration mit
throws:
public void meineMethode() throws NewException {}
Herunterladen