• Keine Ergebnisse gefunden

Fehler abfangen

N/A
N/A
Protected

Academic year: 2022

Aktie "Fehler abfangen"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Exceptions

(2)

Fehler abfangen

zur Laufzeit auftretene Fehler sollen Programm nicht terminieren

ung¨ultige Eingabe kann wiederholt werden lassen

Fehler in einem Teil muss andere Teile nicht ber¨uhren

pl¨otzliche Termination evtl. fatal

. . .

gebraucht: Mechanismus, um Fehler zur Laufzeit abzufangen und zu behandeln

muss damit nat¨urlich Teil der Sprache werden

Was ist eigentlichFehler? Allgemeiner: Ausnahme/ Exception

(3)

Mechanismus

Ausnahmen werden

geworfen: signalisiert das Auftreten, Ausf¨uhrung des Programms wird unterbrochen

gefangen: anderer Teil des Programms ¨ubernimmt Ausf¨uhrung, normalerweise Fehlerbehandlung

deklariert: Compiler soll Nicht-Abbruch garantieren k¨onnen verschiedene Ausnahmen erfordern i.A. verschiedene Behandlungen Mechanismus f¨ur Verschiedenheit in Java vorhanden:

Klassenhierarchie mit Vererbung

(4)

Fehler- und Ausnahmenmodellierung

Throwable: formalisiert allgemein Ausnahmen

Error: Abnormalit¨aten, die

normalerweise zu Programmabbruch f¨uhren

sollten nicht gefangen werden

Exception: unerwartete / unerw¨unschte Situationen sollten gefangen werden

RuntimeException: Fehler in der Programmlogik

sollten erst gar nicht auftreten, also auch nicht gefangen werden

(5)

RuntimeExceptions

typische RuntimeExceptions:IndexOutOfBoundsException, NullPointerException, etc.

Auftreten kann eigentlich vorher ausgeschlossen werden

sollten nicht gefangen werden, denn was w¨urde Fehlerbehandlung schon besser machen?

RuntimeExceptions sindunchecked: m¨ussen im Gegensatz zu Unterklassen vonException nicht deklariert werden

Idee dahinter: Laufzeitfehler sind unvorhergesehen, k¨onnen praktisch in jeder Methode auftreten

(6)

Ausnahmen in Java

Ausnahmen werfen mitthrow e, wobeie vom Typ Throwable (besser:Exception)

Ausnahmen fangen:

try c catch (E1 e1)c1 . . .catch (E1 e1)cn

Blockc wird ausgef¨uhrt

beim Auftreten einer Ausnahmee wird kleinstes i gesucht, sodass e Typ Ei hat

Blockci wird ausgef¨uhrt

(7)

Finally

Programmfluss kann durch Ausnahmen unterbrochen werden, bevoressentieller Code ausgef¨uhrt wurde; Bsp.:EOFException beim Lesen aus einer Datei

essentieller Code (z.B. Datei schließen) kann dennoch automatisch ausgef¨uhrt werden (auch ohne Exception!)

FileReader reader;

try {

reader = new FileReader("meineLieblingsDatei.txt");

while (true) { reader.read();

}

} catch (FileNotFoundException e) {

System.out.println("Gibt’s nicht. Schade.");

} catch (IOException e) {

System.out.println("Heute genug getan.");

} finally { reader.close();

}

(8)

Ausnahmen deklarieren

kann eine Exception, die nicht RuntimeException ist, in einer Methode auftreten, so muss dies deklariert werden

class NichtsFunktioniert extends Exception { ... } class A {

...

public void probierMal() throws NichtsFunktioniert { ...

throw new NichtsFunktioniert();

...

} ...

}

nicht n¨otig, falls Ausnahme innerhalb der Methode gefangen wird

(9)

Zu beachten

Ausnahmen selbst definieren falls n¨otig

try-Bl¨ocke verlangsamen Code nicht, auftretende Ausnahmen aber schon

Ausnahmen nicht zur Steuerung des Kontrollflusses (wie z.B.

break) einsetzen

Ausnahmen sind wirklich Teil der Sprache: k¨onnen z.B. auch in catch-Teilen auftreten

Ausnahmen so speziell wie m¨oglich abfangen und wirklich behandeln, nicht

catch (Exception e) { e.printStackTrace(System.err); }

Ausnahmen in JavaDoc-Dokumentation nicht vergessen

Referenzen

ÄHNLICHE DOKUMENTE

[r]

[r]

If the person does not work with an employer in the host country (e.g. people working on a building site, self-employed persons partly working in the other state from their

The ‘Reply to Request for Exception’ SED A002 is used in reply to a preceding ‘Request for Exception’..

With the ‘Acceptance of Request for Exception’ SED A011 the sending institution notifies its full acceptance of a request for exception in accordance to Article 16.1

The Administrative sub-process 'Business Exception' is used in a situation where you receive an erroneous message (which causes an exception to occur in your national application),

The simulation approach considers the processes of order picking and truck loading within the warehouse dispatch area of non-cooled perishable items to investigate the

Das bedeutet, dass zu jeder Methode (Frame) eine eigene Exception-Table zugewiesen wird. Jeder Catch-Block in der Methode erzeugt jeweils einen Eintrag in der Exception-Table.