Przykładowo, w C++ wyjątkiem może być wartość dowolnego typu:
try { throw 20; } catch(int x) { cout << "Wystąpił wyjątek o kodzie " << x; }
W Javie wyjątki mogą być wyłącznie obiektami klas rozszerzających klasę Throwable:
try { throw new Exception("Informacja o błędzie"); } catch(Exception x) { System.err.println(x.getMessage()); }
Bezpieczna obsługa wyjątków Skuteczność obsługi błędów zależy od przyjętej strategii obsługi wyjątków. Jednym z największych wyzwań jest konieczność przekazywania informacji o wyjątkach między systemami. Aplikacje biznesowe mogą składać się z wielu niewielkich programów oraz być rozproszone pomiędzy kilka maszyn, co wymaga podjęcia decyzji czy dany wyjątek powinien być obsługiwany w ramach aktualnego procesu czy przekazany do innej części systemu.
Odporność na wyjątki O kodzie powiemy, że jest bezpieczny dla wyjątków (ang. exception-safe), jeśli rzucenie wyjątku w jego obrębie nie produkuje niepożądanych skutków ubocznych takich, jak wycieki pamięci, generowanie nieprawidłowego wyniku czy pozostawienie systemu w stanie niespójnym. Kod bezpieczny dla wyjątków musi spełniać niezmienniki nawet w przypadku wystąpienia błędu.