[VS05]: Problem mit Ausnahmespezifikation (throw)

DarthShader

Erfahrenes Mitglied
Hallo,

ich benutze seit kurzem das Visual Studio 2005. Ich kompiliere damit Code, der ursprünglich unter VS 2003 erstellt wurde. Es geht um die folgende exemplarische Zeile:

Code:
virtual ValueType string_to_value( const std::string& ) const throw( std::runtime_error ) = 0;

Der Compiler wirft mir folgende Warning Meldung:

Warnung 51 warning C4290: C++-Ausnahmespezifikation ignoriert, es sei denn, es wird angezeigt, dass eine Funktion nicht __declspec(nothrow) ist

Die Dokumentation sagt dazu:

Eine Funktion wurde mit einer Ausnahmespezifikation deklariert, die von Visual C++ zwar akzeptiert, nicht aber implementiert wird

Wieso wird denn die Ausnahmespezifikation "throw( std::runtime_error )" vom VS nicht implementiert? Oder bezieht sich die Fehlermeldung möglicherweise auf etwas anderes?


Danke für Eure Hilfe!
 
Hi.

Das ist ein Grund warum der C++ Compiler von Microsoft nicht 100% C++ standardkonform ist.

Die Deklaration wird ignoriert, da der Compiler mit der Aussage welche Ausnahmen geworfen werden können nichts anfangen kann. In MS VC++ kann man lediglich angeben ob Ausnahmen geworfen werden:
C++:
throw (...)
oder das überhaupt keine Ausnahmen geworfen werden:
C++:
throw ()
Gruß
 

Neue Beiträge

Zurück