22.7 Standardowe wyjątki

Standardowa biblioteka C++ definiuje wiele typów wyjątków, które są zgłaszane przez funkcje pochodzące z tej biblioteki (funkcje biblioteczne czystego C nie zgłaszają wyjątków). Wszystkie te typy wyprowadzone są z typu exception. Klasa ta deklaruje wirtualną metodę what, dostarczającą, w postaci C-napisu, informację o wyjątku. W klasach pochodnych od exception należy zatem zapewnić sensowną implementację tej metody.

Do najważniejszych wyjątków standardowych, które często przychodzi nam obsługiwać, należą:

bad_alloc (nagłówek new) —  Zgłaszany jest przez operator new w razie niemożności przydzielenia pamięci na tworzony obiekt.

bad_cast (nagłówek typeinfo) —  Zgłaszany jest przez operator dynamic_cast, , jeśli nie udała się żądana konwersja.

bad_typeid (nagłówek typeinfo) —  Zgłaszany jest przez operator typeid, jeśli wskaźnik będący jego argumentem jest pusty.

bad_exception (nagłówek exception) —  Zgłaszany jest, jeśli w funkcji wystąpi jakikolwiek nieobsłużony wyjątek nie wymieniony w specyfikacji wyjątków tej funkcji, pod warunkiem, że na liście specyfikacji znajduje się właśnie bad_exception. Pozwala to obsługiwać nieoczekiwane wyjątki o nieznanym zawczasu typie bez przerywania programu.

ios::failure (nagłówek ios) —  Zgłaszany jest, jeśli stan strumienia zmienił się w niepożądany sposób. Definicję tego niepożądanego stanu należy określić wywołując przedtem na rzecz obiektu strumienia metodę exceptions.

T.R. Werner, 25 lutego 2017; 22:31