In C ++ können Sie mithilfe eines Ausnahmespezifizierers angeben, dass eine Funktion eine Ausnahme auslösen kann oder nicht. Beispielsweise:
void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
Ich bin aus folgenden Gründen zweifelhaft, ob ich sie tatsächlich verwenden soll:
- Der Compiler erzwingt Ausnahmespezifizierer nicht wirklich auf strenge Weise, daher sind die Vorteile nicht groß. Idealerweise möchten Sie einen Kompilierungsfehler erhalten.
- Wenn eine Funktion einen Ausnahmespezifizierer verletzt, besteht das Standardverhalten darin, das Programm zu beenden.
- In VS.Net wird throw (X) als throw (...) behandelt, sodass die Einhaltung des Standards nicht stark ist.
Denken Sie, dass Ausnahmespezifizierer verwendet werden sollten?
Bitte antworten Sie mit "Ja" oder "Nein" und begründen Sie Ihre Antwort.