Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ausnahmen HS Merseburg (FH) WS 06/07.

Ähnliche Präsentationen


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

1 Ausnahmen HS Merseburg (FH) WS 06/07

2 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 HS Merseburg (FH) WS 06/07

3 // Anweisungen, in denen Fehler auftreten können }
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 HS Merseburg (FH) WS 06/07

4 public static void waitForReturn () {
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);} } HS Merseburg (FH) WS 06/07

5 auch durch break, continue, return catch-Block
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 HS Merseburg (FH) WS 06/07

6 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 HS Merseburg (FH) WS 06/07

7 Ausnahmen sind Klassen
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 HS Merseburg (FH) WS 06/07

8 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); HS Merseburg (FH) WS 06/07

9 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 HS Merseburg (FH) WS 06/07

10 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; } HS Merseburg (FH) WS 06/07

11 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 ... } HS Merseburg (FH) WS 06/07

12 public static void main (String[] args) throws IOException { ... }
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(); } HS Merseburg (FH) WS 06/07

13 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 HS Merseburg (FH) WS 06/07

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


Herunterladen ppt "Ausnahmen HS Merseburg (FH) WS 06/07."

Ähnliche Präsentationen


Google-Anzeigen