Varietatea sarcinilor rezolvate astăzi cu ajutorul computerelor personale este asigurată de existența unui set imens de programe de aplicații. Confortul de a lucra cu software-ul depinde în mare măsură de fiabilitatea acestuia, care se exprimă în absența unor situații de urgență. Cu toate acestea, multe programe se prăbușesc în cel mai nepotrivit moment. De ce?
Mecanismul de excepție este utilizat pentru a urmări și gestiona situații speciale, anormale sau eronate care apar în timpul funcționării programelor de computer sub controlul sistemelor de operare moderne. Excepțiile pot fi hardware (lansat de procesor) și software (lansat de aplicație în sine sau de o componentă externă de plug-in).
Indiferent de tip, excepția poate fi surprinsă și tratată corect. Excepțiile neacoperite se îndreaptă către handler-ul bibliotecii root runtime sau către un handler instalat de sistemul de operare. Dacă se întâmplă acest lucru, programul se blochează cu un mesaj sau o fereastră de terminare anormală (în Windows). Dacă gestionarul sistemului de operare nu a funcționat (de exemplu, a fost eliminat în mod deliberat), programul „se blochează în tăcere”. Astfel, programele se blochează din cauza excepțiilor care nu pot fi gestionate. Motivele apariției excepțiilor sunt diferite.
În majoritatea covârșitoare a cazurilor, programele se blochează din cauza executării propriului cod care conține erori de implementare explicite sau implicite. Lista posibilelor cauze ale urgențelor este foarte lungă. Acestea sunt atât erori clasice ale operațiunilor pe numerele cu virgulă mobilă (de exemplu, împărțirea la 0), cât și erori de lucru cu memoria (citirea sau scrierea în afara spațiului de adrese ale procesului, accesul la paginile protejate, scrierea într-o zonă de memorie numai în citire), stiva de revărsare datorită recursivității infinite etc. În aceste cazuri, sunt aruncate excepții hardware sau excepții ale sistemului de operare.
Erorile implicite includ diverse cazuri de filtrare insuficientă a datelor de intrare, lipsa validării valorilor indicatorului și multe altele. Astfel de neajunsuri conduc la situații excepționale numai în anumite cazuri.
Erorile de implementare pot fi găsite și în componentele externe utilizate de aplicație. De exemplu, în bibliotecile dinamice care oferă funcționalitatea necesară sau module de completare. Codul programului care este implicit încărcat în spațiul de adrese al unui proces (de exemplu, pentru a intercepta anumite funcții API) poate provoca, de asemenea, blocarea programului.
Multe componente și biblioteci (de exemplu, ADO pe Windows) folosesc mecanismul de excepție programatică ca prioritate pentru raportarea erorilor. Absența sau gestionarea incompletă a excepțiilor de către acest tip de aplicație poate duce la blocarea acesteia chiar și în situații complet inofensive (cum ar fi pierderea conexiunii la baza de date).