W C ++ można określić, że funkcja może, ale nie musi, zgłaszać wyjątek przy użyciu specyfikatora wyjątku. Na przykład:
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
Wątpię, czy faktycznie ich używam z następujących powodów:
- Kompilator tak naprawdę nie narzuca specyfikatorów wyjątków w żaden rygorystyczny sposób, więc korzyści nie są duże. Idealnie byłoby, gdybyś chciał otrzymać błąd kompilacji.
- Jeśli funkcja narusza specyfikator wyjątku, myślę, że standardowym zachowaniem jest zakończenie programu.
- W VS.Net traktuje rzut (X) jako rzut (...), więc trzymanie się standardu nie jest mocne.
Czy uważasz, że należy używać specyfikatorów wyjątków?
Odpowiedz „tak” lub „nie” i podaj powody uzasadniające odpowiedź.