Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.

Ähnliche Präsentationen


Präsentation zum Thema: "Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten."—  Präsentation transkript:

1 Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten -Illegale mathematische Operationen - Aufruf einer Methode mit Parametern ausserhalb des erlaubten Bereichs (Nichteinhaltung der Preconditions) Turtle t; t.forward(100); int a = 2; int b = 0; int c = a / b; - Eingabewerte ausserhalb des erlaubten Bereichs (Inputvalidation) - Überlauf von reservierten Speicherbereichen (Arrayindex, Stringlängen, Memorypools) Typische Reaktionen: -Programm od. Computer hängt ohne Fehlermeldung (Absturz) -Fehlermeldung und Möglichkeit, das Programm höflich zu beenden Hauptproblem: -Schwierig voraussehbar, was alles schief gehen kann (defensive Programmierung) -Fehler kann in einem gewissen Bereich des Programms auftreten. Nach Fehler muss man aus diesem Bereich hinausspringen und den Fehler in einem Fehler- handler bearbeiten (unstrukturierte Programmierung, goto)

2 Learning By Doing try-catch-Blöcke try {... } catch (AaaException ex) { } catch (BbbException ex) { } finally { }... BbbException geworfen

3 Learning By Doing Ohne Fehlerabfang // WbzEx16.java import ch.aplu.util.*; public class WbzEx16 { private int[] a = new int[2]; public WbzEx16() { System.out.println( "Array mit zwei Elementen.\n" + "Weise dem zweiten einen Wert zu..."); a[2] = 6; System.out.println("hier geht's weiter"); } public static void main(String[] args) { Console.init(); new WbzEx16(); } Nichts geht weiter

4 Learning By Doing Mit Fehlerabfang // WbzEx16a.java import ch.aplu.util.*; public class WbzEx16a { private int[] a = new int[2]; public WbzEx16a() { System.out.println( "Array mit zwei Elementen.\n" + "Weise dem zweiten einen Wert zu..."); try { a[2] = 6; } catch (Exception ex) { System.out.println("Exception gefangen"); System.out.println(ex); } System.out.println("Hier geht's weiter..."); } public static void main(String[] args) { Console.init(); new WbzEx16a(); } try { a[2] = 6; } catch (Exception ex) { System.out.println("Exception gefangen"); System.out.println(ex); } Schon besser

5 Learning By Doing Explizite/implizite Exceptions Klassenhierarchie der Exceptions Explizite Exceptions müssen abgefangen werden (grau) Implizite Exceptions können abgefangen werden Wirft eine Methode eine Exception, so gilt: Beispiel: FileNotFoundException (Subklasse von IOException) Beispiel: ArrayIndexOutOfBoundsException (Subklasse von RuntimeException)

6 Learning By Doing Exceptions nach oben werfen Exceptions "nach oben werfen" // WbzEx17.java import ch.aplu.util.*; public class WbzEx17 { public WbzEx17() { System.out.println("Gehe schlafen, szssss..."); Thread.currentThread().sleep(3000); System.out.println("bin wieder aufgewacht."); } public static void main(String[] args) { Console.init(); new WbzEx17(); } throws Exception Kein guter Programmier- stil Aber voller try-catch-Blöcke auch nicht!


Herunterladen ppt "Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten."

Ähnliche Präsentationen


Google-Anzeigen