29.04.2014 Aufrufe

Leseprobe

Leseprobe

Leseprobe

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.

114<br />

Anweisungen für die Ausnahmebehandlung<br />

Das Besondere an diesem Beispiel ist, dass der Code gleich zwei catch-Blöcke<br />

für denselben try-Block verwendet. Der erste catch-Block kümmert sich speziell<br />

um die häufiger auftretende Ausnahme DivideByZeroException und der zweite<br />

um alle restlichen Ausnahmen.<br />

Es ist wichtig, dass Sie catch-Blöcke so anreihen, dass der Code für die Behandlung<br />

spezieller Ausnahmen vor dem für allgemeinere Ausnahmen zu stehen<br />

kommt. Das Beispiel in Listing 7.7 zeigt, was passiert, wenn Sie sich nicht an<br />

diese Reihenfolge halten:<br />

Listing 7.7:<br />

catch-Blöcke in falscher Reihenfolge<br />

1: try<br />

2: {<br />

3: int nTheZero = 0;<br />

4: int nResult = 10 / nTheZero;<br />

5: }<br />

6: catch(Exception Ex)<br />

7: {<br />

8: Console.WriteLine("Allgemeine Ausnahme" + Ex.ToString());<br />

9: }<br />

10: catch(DivideByZeroException divEx)<br />

11: {<br />

12: Console.WriteLine("Und sie ward nie gesehen...");<br />

13: }<br />

Der Compiler bemerkt den Verdreher und generiert eine Fehlermeldung nach folgendem<br />

Muster:<br />

wrongcatch.cs(10,9): error CS0160: A previous catch clause already catches<br />

all exceptions of this or a super type ('System.Exception')<br />

Zum Schluss dieser Betrachtung sollte nicht unerwähnt bleiben, das der Ausnahmemechanismus<br />

des NGWS-Laufzeitsystems gegenüber dem SEH folgenden<br />

Mangel (oder wenn Sie so wollen: Unterschied) aufweist: Es gibt kein Äquivalent<br />

für den in SEH-Ausnahmefiltern definierten Bezeichner EXCEPTION_CONTINUE_<br />

EXECUTION. Dieser Bezeichner ermöglicht im Wesentlichen die Wiederholung des<br />

für die Ausnahme verantwortlichen Codes, nachdem die Ursache des Fehlers<br />

behoben ist. Eine bevorzugte Speicherverwaltungstechnik des Autors war in diesem<br />

Zusammenhang beispielsweise die Speicheranforderung in Reaktion auf<br />

Ausnahmen aufgrund von Zugriffsverletzungen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!