Ausnahmespezifikation
-
Kann mir jemand erklären wieso diese Code äquivalent sind?
void f () throw (t2, t5) { //Code }äquivalent zu :
void f() { //Code } catch (t2) {throw;} catch (t5) {throw;} catch (...){std::unexpected();}
-
Der Code ist nicht gleich! Beim ersten darf keine Exception ausser
t2undt5geworfen werden (sonst gibt's einen Fehler) und beim zweiten Code werden andere Exceptions einfach nicht weitergeleitet.MfG, EOutOfResources
-
Übrigens würde ich keine Exception-Specifications verwenden. Sie haben eine Menge Nachteile und halten nicht, was sie versprechen. In C++0x (dem kommenden C++-Standard) sind sie deprecated.
-
Erklär das bitte genauer.
-
Lies den Link.
-
exception spezifikation heisst doch, dass im funktiosnkopf angegeben wird, welche exception geworfen wird, oder?!?
also das hier
void foo(int bar) throw bool { char c; if ( c == 0 ) throw false; }
-
EOutOfResources schrieb:
beim zweiten Code werden andere Exceptions einfach nicht weitergeleitet.
Beim zweiten Code wird bei allen anderen Exceptions std::unexpected() aufgerufen...
-
LordJaxom schrieb:
EOutOfResources schrieb:
beim zweiten Code werden andere Exceptions einfach nicht weitergeleitet.
Beim zweiten Code wird bei allen anderen Exceptions std::unexpected() aufgerufen...
Und das ist was ganz anderes, als dass sie nicht weitergeleitet werden.
Sie werden nämlich weitergeleitet.http://www.cplusplus.com/reference/std/exception/unexpected/
Lg freeG