30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

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.

320 11. Exceptions<br />

Außerdem gilt noch, dass immer der erste catch Block angesprungen wird,<br />

der e<strong>in</strong>e dieser Bed<strong>in</strong>gungen erfüllt. Sollten also aus Gründen der Typenkompatibilität<br />

mehrere catch Blöcke <strong>in</strong> Frage kommen, so wird der erste<br />

davon genommen. Das bedeutet also, dass auch die Reihenfolge, <strong>in</strong> der die<br />

catch Blöcke vorkommen, e<strong>in</strong>e große Bedeutung spielt. Sehen wir uns das<br />

am besten an e<strong>in</strong>em Beispiel an (second_exception_demo.cpp):<br />

1 // second exception demo . cpp − another demo , how the exception<br />

2 // mechanism 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 virtual ˜ Exception ( ) { }<br />

16 } ;<br />

17<br />

18 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

19 class DerivedAException : public virtual Exception<br />

20 {<br />

21 public :<br />

22 DerivedAException ( ) { }<br />

23 virtual ˜ DerivedAException ( ) { }<br />

24 } ;<br />

25<br />

26 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

27 class DerivedBException : public virtual Exception<br />

28 {<br />

29 public :<br />

30 DerivedBException ( ) { }<br />

31 virtual ˜ DerivedBException ( ) { }<br />

32 } ;<br />

33<br />

34 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

35 class DerivedCException : public DerivedAException<br />

36 {<br />

37 public :<br />

38 DerivedCException ( ) { }<br />

39 virtual ˜ DerivedCException ( ) { }<br />

40 } ;<br />

41<br />

42 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

43 class DerivedDException : public DerivedAException ,<br />

44 public DerivedBException<br />

45 {<br />

46 public :<br />

47 DerivedDException ( ) { }<br />

48 virtual ˜ DerivedDException ( ) { }<br />

49 } ;<br />

50<br />

51 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

52 void demoFuncException ( )<br />

53 throw( Exception )<br />

54 {<br />

55 throw Exception ( ) ;<br />

56 }

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!