16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

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

In <strong>de</strong>r catch-Klausel wird die Art <strong>de</strong>r aufzufangen<strong>de</strong>n Ausnahme <strong>de</strong>f<strong>in</strong>iert. Dort ist<br />

e<strong>in</strong> formaler Parameter angegeben, <strong>de</strong>r beim Auftreten <strong>de</strong>r Ausnahme e<strong>in</strong><br />

Fehlerobjekt übernehmen soll. Fehlerobjekte s<strong>in</strong>d Instanzen <strong>de</strong>r Klasse Throwable<br />

(o<strong>de</strong>r e<strong>in</strong>e ihrer Unterklassen). Sie wer<strong>de</strong>n vom Aufrufer <strong>de</strong>r Ausnahme erzeugt und<br />

als Parameter an die catch-Klausel übergeben. Das Fehlerobjekt enthält<br />

Informationen über die Art <strong>de</strong>r aufgetretenen Ausnahme. Es kann dort e<strong>in</strong>e <strong>de</strong>r<br />

zahlreichen Standardausnahmen von <strong>Java</strong> stehen o<strong>de</strong>r auch selbst<strong>de</strong>f<strong>in</strong>ierte<br />

Ausnahmen. Das Ausnahme- / Fehlerobjekt besitzt e<strong>in</strong>ige nützliche Metho<strong>de</strong>n, z.B.<br />

public Str<strong>in</strong>g getMessage() 123 . Diese Metho<strong>de</strong> gibt Fehlermeldungen zurück.<br />

public void pr<strong>in</strong>tStackTrace(). Diese Metho<strong>de</strong> druckt e<strong>in</strong>en Auszug aus<br />

<strong>de</strong>m Laufzeit-Stack.<br />

Am En<strong>de</strong> e<strong>in</strong>es try-Blocks können beliebig viele „catch“-Klauseln stehen, so daß<br />

unterschiedliche Arten von Ausnahmen behan<strong>de</strong>lt wer<strong>de</strong>n können.<br />

Mit Hilfe <strong>de</strong>r f<strong>in</strong>ally-Klausel (letzter Bestandteil e<strong>in</strong>er try-catch-Anweisung)<br />

kann e<strong>in</strong> Programmfragment <strong>de</strong>f<strong>in</strong>iert wer<strong>de</strong>n, das immer ausgeführt wird, wenn die<br />

zugehörige try-Klausel betreten wur<strong>de</strong>.<br />

Bsp.: Rückgabe von „Resourcen“ <strong>in</strong> <strong>de</strong>r f<strong>in</strong>ally-Klausel<br />

In <strong>de</strong>m folgen<strong>de</strong>n Programm stellt die f<strong>in</strong>ally-Klausel sicher, daß <strong>de</strong>r Schalter<br />

tatsächlich nach <strong>de</strong>m En<strong>de</strong> <strong>de</strong>r Bearbeitung im try-catch-Block ausgeschaltet ist.<br />

class Schalter<br />

{<br />

boolean zustand = false;<br />

boolean lies() { return zustand; }<br />

void an() { zustand = true; }<br />

void aus() { zustand = false; }<br />

}<br />

public class AnAusSchalter<br />

{<br />

static Schalter schalter = new Schalter();<br />

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

{<br />

try<br />

{<br />

schalter.an();<br />

// hier kann sich Quellco<strong>de</strong> bef<strong>in</strong><strong>de</strong>n, <strong>de</strong>r<br />

// Ausnahmen ausloest<br />

}<br />

catch(NullPo<strong>in</strong>terException a)<br />

{<br />

System.out.pr<strong>in</strong>tln("NullPo<strong>in</strong>terException");<br />

}<br />

catch(IllegalArgumentException a)<br />

{<br />

System.out.pr<strong>in</strong>tln("IllegalArgumentException");<br />

}<br />

f<strong>in</strong>ally<br />

{<br />

schalter.aus();<br />

}<br />

}<br />

}<br />

123 Sie ist <strong>in</strong> <strong>de</strong>r Klasse Throwable <strong>de</strong>f<strong>in</strong>iert und daher allen Exception-Objekten zugänglich.<br />

122

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!