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, 21 lutego 2016; 20:17