16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

- Suche nach e<strong>in</strong>em Ausnahmen-Handler <strong>in</strong> <strong>de</strong>n umgeben<strong>de</strong>n Blöcken<br />

- Bei erfolgloser Suche Weitergabe <strong>de</strong>s Fehlers an <strong>de</strong>n Aufrufer.<br />

Wird die Ausnahme nicht <strong>in</strong>nerhalb <strong>de</strong>rselben Metho<strong>de</strong> behan<strong>de</strong>lt, dann ist sie mit<br />

Hilfe <strong>de</strong>r "throws"-Klausel zu <strong>de</strong>klarieren und „weiter oben“ <strong>in</strong> <strong>de</strong>r Aufrufkette zu<br />

behan<strong>de</strong>ln.<br />

Bsp.:<br />

public class AusnahmeMetho<strong>de</strong>n<br />

{<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g args[])<br />

{<br />

try<br />

{<br />

throw new Exception("Hier ist me<strong>in</strong>e Ausnahme");<br />

}<br />

catch (Exception a)<br />

{<br />

System.out.pr<strong>in</strong>tln("E<strong>in</strong>gefangene Ausnahme");<br />

System.out.pr<strong>in</strong>tln("a.getMessage(): " + a.getMessage());<br />

System.out.pr<strong>in</strong>tln("a.toStr<strong>in</strong>g(): " + a.toStr<strong>in</strong>g());<br />

System.out.pr<strong>in</strong>tln("a.pr<strong>in</strong>tStackTrace(): ");<br />

a.pr<strong>in</strong>tStackTrace();<br />

}<br />

}<br />

}<br />

/* Ausgabe:<br />

E<strong>in</strong>gefangene Ausnahme<br />

a.getMessage(): Hier ist me<strong>in</strong>e Ausnahme<br />

a.toStr<strong>in</strong>g(): java.lang.Exception: Hier ist me<strong>in</strong>e Ausnahme<br />

a.pr<strong>in</strong>tStackTrace():<br />

java.lang.Exception: Hier ist me<strong>in</strong>e Ausnahme<br />

at AusnahmeMetho<strong>de</strong>n.ma<strong>in</strong>(AusnahmeMetho<strong>de</strong>n.java)<br />

*/<br />

Die throw-Anweisung besitzt Merkmale e<strong>in</strong>er Sprunganweisung. Sie unterbricht das<br />

Programm und verzweigt unmittelbar zur umgeben<strong>de</strong>n catch-Klausel. Gibt es ke<strong>in</strong>e<br />

catch-Klausel, wird <strong>de</strong>r Fehler weitergegeben. Tritt die Ausnahme <strong>in</strong>nerhalb e<strong>in</strong>er<br />

try-catch-Anweisung mit e<strong>in</strong>er f<strong>in</strong>ally-Klausel auf, wird diese noch vor <strong>de</strong>r<br />

Weitergabe ausgeführt.<br />

Auch das „Wie<strong>de</strong>rauswerfen“ e<strong>in</strong>er Ausnahme ist möglich, <strong>in</strong>sbeson<strong>de</strong>re dann, falls<br />

e<strong>in</strong>e Ausnahme e<strong>in</strong>gefangen wur<strong>de</strong>, sie aber <strong>in</strong> e<strong>in</strong>em größeren Zusammenhang<br />

behan<strong>de</strong>lt wer<strong>de</strong>n soll<br />

catch (Exception a)<br />

{<br />

System.out.pr<strong>in</strong>tln("E<strong>in</strong>e Ausnahme wur<strong>de</strong> e<strong>in</strong>gefangen");<br />

throw a;<br />

}<br />

Eigene, d.h. benutzer<strong>de</strong>f<strong>in</strong>ierte Ausnahmen können direkt von <strong>de</strong>r Klasse<br />

Exception abgeleitet wer<strong>de</strong>n, z.B. 124 :<br />

class Me<strong>in</strong>eAusnahme extends Exception<br />

{<br />

private <strong>in</strong>t i;<br />

public Me<strong>in</strong>eAusnahme() {}<br />

public Me<strong>in</strong>eAusnahme(Str<strong>in</strong>g nachricht)<br />

124 Vgl. pr14140<br />

125

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!