Krome navratovych hodnot a vyjimek existuje jeste treti bezny mechanismus osetrovani chybovych stavu - error handlery. To ma treba Common Lisp ve forme signalu. (Bohuzel, moje oblibena kniha Code Complete na tenhle treti zpusob zapomina, za coz puvodne asi muze dost omezena implementace signal handleru v Unixu, ktera zpusobila, ze v C-like jazycich tato metoda neni prilis popularni.)
Z hlediska programatora jede v podstate vzdy o kompromis mezi temito tremi mechanismy. Vyjimky jsou lepsi nez navratove hodnoty, protoze umoznuji osetrit chybu na libovolne urovni. Error handlery jsou lepsi nez vyjimky, protoze neodvinou zasobnik a lokalni promenne. Navratove hodnoty jsou lepsi nez error handlery, protoze jsou podstatne jednodussi na pouzivani.
Ve funkcionalnim programovani se ty tri moznosti trochu stiraji do jednoho zpusobu (chyba jako navratova hodnota), protoze obvykle maji dostatecne moznosti abstrakce, takze umoznuji tak nejak emulovat vyhody ostatnich zpusobu.