Gliederung • Grundlagen • Schlüsselworte try

Werbung
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Gliederung
Gliederung
• Grundlagen
Grundlagen
• Schlüsselworte try-catch
try-catch
• Fehlerobjekte
Fehlerobjekt
Fehlerklassen
• Fehlerklassen
finally
• Schlüsselwort finally
throws
• Schlüsselwort throws
eigene
Fehlerklassen
© Philip Brandt 2008
• selbst erstellte Exceptions
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Gliederung
Exceptions ermöglichen die Behandlung von
Fehlern, die zur Laufzeit entstehen.
Grundlagen
try-catch
in C: Fehler führt immer zum Abbruch des Programms
Fehlerobjekt
Fehlerklassen
finally
throws
eigeneFehlerklassen
• Throwing:
bezeichnet das Auslösen einer Exception
• Catching:
bezeichnet die Behandlung einer Exception
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Eine Exception kann im gleichen Programmteil behandelt
werden, in dem sie erzeugt wird, oder weitergegeben werden.
Gliederung
Grundlagen
try-catch
Wird die Exception nicht explizit behandelt, erzeugt der
Compiler eine Fehlermeldung und bricht das Programm ab.
Fehlerobjekt
Fehlerklassen
Exception in thread "main" java.lang.Error: Unresolved
compilation problem:
finally
Wuerfel cannot be resolved or is not a field
throws
eigeneFehlerklassen
© Philip Brandt 2008
at Aufgabe2.main(Aufgabe2.java:29)
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Nach einer catch-Klausel kann das Programm fortgeführt
werden.
Gliederung
Grundlagen
try-catch
public class Bsp_Feld {
public static void main(String[] args) {
int feld[] = new int[4];
Fehlerobjekt
for (int i = 0; i<=6; i++){
Fehlerklassen
try{
feld[i] = i;
finally
System.out.printf("%d\n", feld[i]);
throws
} catch (ArrayIndexOutOfBoundsException e1){
eigeneFehlerklassen
System.out.printf("Das Feld ist zu kurz!!!\n");
}
}
System.out.printf("Programm zuende!");
}
}
> Beispiel 1, 2
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Die Anweisungen werden von einem try...catch-Block
eingeschlossen.
Gliederung
try {
Grundlagen
try-catch
//Programmcode
...
Fehlerobjekt
} catch (Ausnahmetyp x) {
Fehlerklassen
//Anweisungen bei Exception
finally
...
throws
eigene
Fehlerklassen
}
Beispiel für einen Ausnahmetyp:
NegativeArraySizeException
Der Versuch, ein Feld einer negativen Länge zu erstellen.
(Exception zu finden in java.lang Bobliothek)
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/class-use/Exception.html
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Gliederung
Die Exception übergibt das Fehlerobjekt e.
} catch (ArrayIndexOutOfBoundsException e){
Grundlagen
try...catch
Fehlerobjekt
Fehlerobjekt
• ist Instantz der Klasse Throwable.
Fehlerklassen
• enthält Informationen über die Art des aufgetretenen
Fehlers.
finally
throws
eigene
Mit der Methode toString() kann man den Fehlertext anzeigen
lassen.
Fehlerklassen
System.out.println(e.toString());
Wenn kein eigener Exception-Handler geschrieben wurde, wird
die Methode printStackTrace() vom Compiler ausgegeben.
> Beispiel 3
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Es können mehrere mögliche Fehler mit mehreren catchKlauseln abgefangen werden.
Gliederung
Grundlagen
Beispiel:
• ArrayIndexOutOfBounceException e1
try...catch
Fehlerobjekt
Fehlerklassen
finally
throws
eigene
Fehlerklassen
(Array zu klein)
•ArrayStoreException e2
(Falscher Datentyp für Array)
• NegativeArraySizeException e3
(Negativer Index)
System.out.println(e1.toString());
System.out.println(e2.toString());
System.out.println(e3.toString());
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Alle Laufzeitfehler in JAVA sind Unterklassen der Klasse
Throwable.
Gliederung
Grundlagen
try...catch
Fehlerobjekt
Fehlerklassen
Die Klasse Throwable ist eine allgemeine Fehlerklasse, die den
Fehlerklartext speichern und einen Auszug aus dem LaufzeitStack geben.
finally
throws
eigene
Fehlerklassen
© Philip Brandt 2008
Unterhalb von Throwable gibt es zwei Vererbungshierachien.
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Unterhalb von Throwable gibt es zwei Klassen:
Gliederung
Grundlagen
Exception
try...catch
Fehlerobjekt
Fehlerklassen
Error
• werden hauptsächlich durch die Java-Maschine versursacht
finally
throws
• sollten nicht behandelt werden
eigene
• sollten zum Abbruch des Programm führen
Fehlerklassen
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Gliederung
Die finally-Klausel wird immer aufgerufen, wenn ein try-Block
verlassen wurde.
Grundlagen
Eine Exception muss nicht auftreten!
try...catch
Der Grund des Verlassens ist egal.
Fehlerobjekt
Fehlerklassen
finally
throws
eigene
Fehlerklassen
Beispiele:
• das Ende des try-Blocks wurde erreicht
• eine Exception wurde behandelt
• eine Exception wurde nicht behandelt
• der try-Block mit break, continue oder return beendet wurde
> Beispiel 4
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Gliederung
Manche Exceptions sind geprüfte Exceptions.
Mit diesen Exceptions muss etwas geschehen, also entweder
weiterreichen oder mittels catch behandeln.
Grundlagen
try...catch
Fehlerobjekt
Fehlerklassen
finally
throws
eigene
Fehlerklassen
public class MachtIO
{
public static void main ( String[] args ) throws IOException
{
BufferedReader stdin =
new BufferedReader ( new InputStreamReader( System.in ) );
// weitere Java Anweisungen ...
}
}
Mit throws IOException wird deutlich, dass Exception nicht in
main() aufgefangen wird, sondern an das Java Laufzeitsystem
übergeben wird.
> Beispiel 5
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Übersicht über geprüfte und ungeprüfte Exceptions
Gliederung
Exception GEPRÜFT
Grundlagen
IOException GEPRÜFT
try...catch
AWTException GEPRÜFT
Fehlerobjekt
RunTimeException
Fehlerklassen
finally
ArithmeticException
IllegalArgumentException
throws
NumberFormatException
eigene
Fehlerklassen
IndexOutOfBounds
Others
Others GEPRÜFT
© Philip Brandt 2008
Exception
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Gliederung
Mit dem Schlüsselwort throw kann man sich eigene Exceptions
schreiben.
Grundlagen
try...catch
Fehlerobjekt
Im Beispiel soll der Versicherungsbetrag für eine Person
ermittelt werden.
Fehlerklassen
finally
throws
eigene
Fehlerklassen
> Beispiel 6
© Philip Brandt 2008
Einführung in objektorientierte Programmierung mit
JAVA
Exceptions
Gliederung
Grundlagen
try...catch
Fehlerobjekt
Fehlerklassen
finally
throws
eigene
Fehlerklassen
© Philip Brandt 2008
Vielen Dank für die Aufmerksamkeit!
Herunterladen