Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Ausnahmen.

Ähnliche Präsentationen


Präsentation zum Thema: "5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Ausnahmen."—  Präsentation transkript:

1 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Ausnahmen

2 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 während der Objektlebenszeit können Fehler auftreten: Eingabefehler, Programmfehler, ungewöhnliche Zustände anderer Objekte etc. Problem: Fehler müssen abgefangen werden u. U. recht aufwändig Java Konzept der Ausnahmebehandlung: eine Ausnahme wird ausgelöst, wenn eine unerwartete Fehlerbedingung auftritt Anweisungen, in denen Fehler auftreten könnten, werden zusammengefasst try-Block falls es bei der Ausführung der Anweisungen im try-Block zu Ausnahmen kommt, werden diese im folgenden catch-Block behandelt, d. h. es wird darauf reagiert

3 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 try { // Anweisungen, in denen Fehler auftreten können } catch (Exception1 e){ // e = lokale Referenzvariable // Behandlung der Ausnahmen vom Typ 1 } catch (Exception2 e){ // Behandlung der Ausnahmen vom Typ 2 } finally { // Anweisungen zum Beenden des try-Blockes }

4 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Exceptions sind eine saubere, einfache Art, Fehler abzufangen, ohne den Quelltext zu überfrachten exception = Signal an das Objekt, dass eine Bedingung eingetreten ist, die besondere Behandlung erfordert Beispielprogramm: public static void waitForReturn () { BufferedReader din = new BufferedReader (new InputStreamReader(System.in)); try { System.out.println("\nBitte Return-Taste druecken..."); din.readLine(); } catch (IOException e) { System.err.println("Fehler: "+e);} }

5 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 try-Block ist normaler Block wird durch die Anforderung einer Ausnahmebehandlung beendet, auch durch break, continue, return catch-Block kein, ein oder mehrere catch-Blöcke möglich, die auf Exceptions des try-Blockes reagieren Ursachen der Exceptions werden beseitigt (Ressourcen freigeben oder neue Ausnahmen anstoßen) Definition wie Methode: Parameter ist ein Objekt der Klasse Throwable oder einer ihrer Unterklassen

6 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Ablauf der Ausnahmebehandlung: wenn eine Ausnahme der Klasse IOException angefordert wird, wird der catch-Block mit einem Parameter IOException oder einer Basisklasse von IOException angesprungen und die Anweisungen des Blockes werden ausgeführt. finally-Block Anweisungen, die nach dem try-Block oder der Ausnahmebehandlung des catch-Blockes ausgeführt werden sollten Freigabe von Ressourcen etc. vergleichbar der finalize-Methode beim GC wird immer ausgeführt, auch nach return, break, continue ist kein passender catch-Block vorhanden, wird erst der finally- Block ausgeführt und dann beendet der Compiler mit dem Namen der Ausnahme und der beim Erzeugen der Ausnahme angegebenen Meldung

7 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Exceptions sollten behandelt werden, wenn normalerweise nicht auftretende Ereignisse eintreten wird die Ausnahme nicht abgefangen, tritt standardmäßige Ausnahmebehandlung in Kraft Ausnahmen sind Klassen Exceptions sind eigene Klassen es gibt eine Klasse pro Ausnahmetyp sind abgeleitet von der Klasse Throwable bzw. einer ihrer Unterklassen Error oder Exception Error: Probleme des Linkers beim dynamischen Laden von Programmteilen (Probleme mit der virtuellen Java Maschine) stellen schwerwiegende Fehler dar und sollten nicht abgefangen werden

8 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Klasse Throwable enthält eine Objektkomponente vom Typ String, die eine Meldung für den Benutzer über den Grund der Exception enthält eine Methode getMessage() zur Ausgabe des String ….. eigene Ausnahmen (von Exception ableiten) class Exception1 extends Exception { public Exception1(){ super(); } public Exception1(String s){ super(s); }

9 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Motivation für eigene Ausnahmen: Reaktion auf spezielle Fehlersituationen benutzerangepassten Fehlertext erzeugen Daten, die Ausnahme ausgelöst haben, speichern Beispiel: eine eingegebene Personalnummer wird nicht gefunden

10 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 public class PersNrNichtGefundenException extends Exception { public String persNr; public Object person; // Konstruktor PersNrNichtGefundenException (String persNr, Object person) { super (Keinen Namen mit der Personalnummer+ persNr + gefunden.) // merken der Daten, die Fehler hervorgerufen haben this.persNr = persNr; this.person = person; }

11 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Auslösen von Ausnahmen erzeugen von Ausnahmen durch throw throw new Exception1 (Die eigene Ausnahme 1 ist aufgetreten); Beispiel: ändern des Namens eines Mitarbeiters durch Vorgabe einer Personalnummer public void aendereNamen (String persNr, Object person) throws PersNrNichtGefundenException { Person pers = find(persNr); if (pers == null)// wenn persNr nicht vorhanden // erzeugen eines Objektes der Klasse PersNr.... throw new PersNrNichtGefundenException(persNr, this); // wenn persNr existiert, dann verarbeiten... }

12 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Das throws-Konstrukt throws gibt an, welche Ausnahmen eine Methode erzeugen kann = Deklaration der auslösbaren Ausnahmen (checked exceptions) public static void main (String[] args) throws IOException{... } oder eine Liste von Ausnahmen public void test()throws Exception1, Exception2{... } statt Aufzählung mehrerer Exceptions kann auch Basisklasse benutzt werden protected void finalize() throws Throwable { // siehe Garbage Collector super.finalize(); close();}

13 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Möglichkeiten zur Behandlung der throws-Ausnahmen: Ausnahme abfangen und behandeln Ausnahme abfangen und auf eigene Ausnahme abbilden mit throw selbst auslösen ohne Behandlung die Methode passieren lassen das Fehlen von throws bedeutet, dass keine Ausnahme ausgeführt werden kann führt u.U. zu Compilerfehlern

14 5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Object Throwable Exception Error (andere Exceptions) RuntimeException AbstractMethodError NullPointerException IndexOutOfBoundsException NumberFormatException...


Herunterladen ppt "5 Ausnahmen und Exceptions Java HS Merseburg (FH) WS 06/07 Ausnahmen."

Ähnliche Präsentationen


Google-Anzeigen