30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

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.

324 11. Exceptions<br />

werden können, die ursprünglich deklariert waren. Dadurch ist sichergestellt,<br />

dass ke<strong>in</strong>e neuen Exceptions geworfen werden können, auf die Code, der mit<br />

der Basisklasse zu tun hatte, eventuell gar nicht reagieren kann.<br />

Es wurde bereits erwähnt, dass man Exceptions auch “weiterwerfen”<br />

kann. Ich möchte gleich vorausschicken, dass dieses Konstrukt <strong>in</strong> nicht allzu<br />

vielen Fällen als schön bezeichnet werden kann, denn entweder kann man e<strong>in</strong>e<br />

Exception behandeln, dann soll man sie fangen, oder nicht, dann soll man sie<br />

<strong>in</strong> Ruhe lassen. E<strong>in</strong>e der ganz wenigen Ausnahmen zu dieser Regel ist der<br />

Fall, dass man für e<strong>in</strong>e Exception zwar ke<strong>in</strong>e Behandlung durchführen kann,<br />

aber noch e<strong>in</strong> paar D<strong>in</strong>ge aufräumen muss, bevor diese Exception dann ihrer<br />

tatsächlichen Behandlung zugeführt wird. Um z.B. für diesen Fall zu wissen,<br />

wie man dies <strong>in</strong> C ++ bewerkstelligt, sehen wir uns am besten e<strong>in</strong> kle<strong>in</strong>es<br />

Beispiel an (rethrow_exc_demo.cpp):<br />

1 // rethrow exc demo . cpp − a demo , how re−throw<strong>in</strong>g an exception<br />

2 // works <strong>in</strong> <strong>C++</strong><br />

3<br />

4 #<strong>in</strong>clude <br />

5 #<strong>in</strong>clude ” u s e r t y p e s . h”<br />

6<br />

7 us<strong>in</strong>g std : : cout ;<br />

8 us<strong>in</strong>g std : : endl ;<br />

9<br />

10 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

11 class Exception<br />

12 {<br />

13 public :<br />

14 Exception ( )<br />

15 {<br />

16 cout

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!