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.