Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java-AG Ausnahmebehandlung 10.5.01 Gerhard Gröger.

Ähnliche Präsentationen


Präsentation zum Thema: "Java-AG Ausnahmebehandlung 10.5.01 Gerhard Gröger."—  Präsentation transkript:

1 Java-AG Ausnahmebehandlung Gerhard Gröger

2 Problem Behandlung von Laufzeitfehlern in Programmen, z.B. Division durch 0 Überschreitung von Arraygrenzen beim Öffnen von Dateien: Datei nicht vorhanden keine Berechtigung

3 Lösung Ausnahmebehandlungs-Mechanismus Vorteile: Programm stürzt nicht ab Genau definierter Wiedereinsetzpunkt Gezielte Reaktion auf Fehler Saubere Trennung zwischen 'Normalfällen' und Fehlerbehandlung

4 Beispiel: Division durch 0 try { int a,b; b = 0; a = 7/b; } catch(Exception e) { a = 0; } Ausnahme wird "zurückgeworfen" (thrown) Ausnahme wird nicht abgefangen Fehlermeldung wird ausgegeben Programm stürzt ab!

5 Beispiel: Division durch 0 try { int a,b; b = 0; a = 7/b; } catch(Exception e) { a = 0; } fehlerträchtiger Code Ausnahme wird zurückgeworfen Reaktion auf Fehler Ausnahme wird abgefangen hier geht es normal weiter

6 Hierarchie der Exceptions (Auszug) Throwable ErrorException IOExc. FileNotFoundExc. PrinterExc. PrinterAbortExc. ArithmeticExc. RuntimeExc. NullPointerExc.

7 Wer verursacht Exceptions? Operatoren, z.B. / Explizit durch throw... Methoden (Schlüsselwort throws) Bsp: public FileInputStream(File file) throws FileNotFoundException jeder Ursache ist eindeutig eine Exception-Klasse zugeordnet Unterscheidung Unchecked Exceptions müssen nicht abgefangen werden Checked Exceptions müssen abgefangen werden (sonst nicht übersetzbar)

8 Schlüsselwort throw Explizites zurückwerfen: z.B. throw new Exception(); Weiterleiten an äußeres try-catch (verschachteltes try-catch) try {... } catch (Exception e) { //Teilweise Behandlung der Exception.... throw e; //Weiterleiten }

9 Mehrere Catch-Klauseln try { } catch(IOException e1) {//Reaktion auf IO-Exc.} catch(ArithmeticException e2) {//Reaktion auf Arithm. Exc.} catch(NullPointerExceptione3) {//Reaktion auf Null-Pointer-Exc....} catch(Exception e) {//Reaktion sonst}

10 Finally try { } catch(IOException e1) {//Reaktion auf IO-Exc.} finally {//Wird in jedem Fall ausgeführt}

11 Aufgabe Schreiben Sie ein Programm, das folgende Fehler erzeugt und abfängt (mit entsprechender Reaktion): Überschreitung von Arraygrenzen ( ArrayIndexOutOfBoundsException ) Division durch 0 ( ArithmeticException ) Benutzen Sie " try " nur einmal! Syntax: try{...} catch(Exception_1 e_1) {...}......catch(Exception_n e_n) {...}

12 Javadoc: c:/Programme/jdk1.3/docs/api/index.html


Herunterladen ppt "Java-AG Ausnahmebehandlung 10.5.01 Gerhard Gröger."

Ähnliche Präsentationen


Google-Anzeigen