šHgeocities.com/Vienna/Stage/4793/excp9.htmgeocities.com/Vienna/Stage/4793/excp9.htmdelayedxŁÕJ’’’’’’’’’’’’’’’’’’’’Č0¤£ˆOKtext/html€Cmoˆ’’’’b‰.HMon, 18 Dec 2000 15:42:18 GMTéMozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)en, *ŁÕJˆ Neue Seite 1

Zurück ] Nach oben ]

 

Was ist die Zukunft?

Standard C++ Handling

Im Vergleich zu traditionellen Techniken ist diese Methode sicherlich eine Alternative, da der Fehler­verwaltungs­aufwand dem System überlassen wird. Die Standardreaktion auf eine Exception ist, dass das Programm abbricht, was eine "Augen zu und durch"-Programmierung nicht ermöglicht und so die Stabilität von Programmen erhöht.

Im Vergleich zu den anderen Exceptionmechanismen hat es folgende Vorteile:

  • Es ist destruktorbewußt, was heißt, dass während des stack unwindings die Destruktoren der lokalen Objekte korrekt aufgerufen werden.

  • Es kann jedes Objekt geworfen werden. Welches, bestimmt der Programmierer.

  • Es ist fehlertolerant. Funktionen können spezifizieren, welches Exception geworfen werfen. Wenn diese Spezifikationen gebrochen werden, benimmt sich das Programm vorhersehbar bzw. das Verhalten kann auf die eigenen Bedürfnisse angepaßt werden.

  • Es ist Bestandteil von C++. Man kann Exceptions ohne irgendwelche Libraries benutzen.

  • Es ist ein Standard, da es in allen Standard C++ Compilern vorhanden ist.

SEH

Ein Vorteil von SEH ist bestimmt, dass es auch unter reinem C funktioniert und sehr eng mit dem Betriebssystem verzahnt ist, da es sogar die Hardware- und Debuggingebene unterstützt.

Von allen C-kompatiblen Mechanismen, hat SEH den Anspruch auf Vollständigkeit und Flexibilität - jedenfalls in der Windowswelt. Ironischerweise ist es aber auch der inflexibelste Mechanismus außerhalb dieser Welt, weil es fest mit der Plattform und dem Compiler verwoben ist.

Für C Programmierer, die nur mit Windows arbeiten, ist es daher die erste Wahl. Falls man portablen Code programmieren möchte und\oder  in C++ programmiert, sollte man die Standard C++ Mechanismen nutzen, wo immer man kann. In Sonderfällen kann man dann immer noch die SEH nutzen. Denn, sobald man in einem SEH-Block mit Objekten arbeitet, die komplizierter sind als int, char oder long , also Objekte, die keinen trivialen Destruktor haben , erzeugt der Compiler einen Fehler, da er diese nicht freigeben kann. Hierzu müsste man die Standard C++ Exceptions ausschalten.

MFC

Wie gesagt: Es ist veraltet!