Diferența dintre excepție și eroare

Diferența dintre excepție și eroare
Diferența dintre excepție și eroare

Video: Diferența dintre excepție și eroare

Video: Diferența dintre excepție și eroare
Video: Introduction to NAT and PAT 2024, Noiembrie
Anonim

Excepție vs eroare

Un comportament neașteptat este obligatoriu să apară atunci când rulează un program. Acest lucru se poate datora unor excepții sau erori. Excepție fac evenimentele care pot perturba fluxul normal al programului. Erorile sunt condiții care pot fi considerate irecuperabile. Excepțiile sunt în mare parte legate de aplicația în sine, în timp ce erorile sunt legate de sistemul pe care rulează programul.

Ce este o excepție?

Excepția este un eveniment care poate perturba fluxul normal al programului. Excepția de nume vine de la „eveniment excepțional”. Aruncarea unei excepții este procesul de creare a unui obiect excepție și de transmitere a acestuia către sistemul de rulare. Obiectul excepție este creat de metoda în care a avut loc excepția. Obiectul excepție conține informații utile, cum ar fi tipul și descrierea excepției. Când sistemul runtime primește obiectul excepție, va încerca să găsească pe cineva care să-l gestioneze în stiva de apeluri, parcurgându-l în ordine inversă (în care au fost apelate metodele). Stiva de apeluri este lista ordonată de metode, care au fost apelate înainte de metoda în care a apărut excepția. Sistemul runtime are succes dacă găsește o metodă cu un handler de excepții. Managerul de excepții este un bloc de cod care poate gestiona în mod oficial excepția menționată. Dacă sistemul de execuție găsește un handler adecvat (adică tipul de excepție se potrivește cu tipul care poate fi gestionat), acesta va transmite obiectul excepție handlerului. Aceasta se numește prinderea excepției. Cu toate acestea, dacă excepția nu poate fi gestionată, programul se va închide. În Java, excepțiile moștenesc de la „clasa Throwable”. NullPointerException și ArrayIndexOutOfBoundsException sunt două excepții comune în Java.

Ce este o eroare?

O eroare este o condiție care poate fi considerată irecuperabilă, cum ar fi programul care necesită o cantitate de memorie mai mare decât cea disponibilă. Aceste erori nu pot fi tratate în timpul execuției. Dacă apare o eroare, programul se va închide. În Java, erorile moștenesc din clasa Throwable. Erorile reprezintă de obicei probleme serioase pe care programatorul (sau aplicația) nu ar trebui să încerce să le surprindă. Erorile sunt pur și simplu condiții anormale, care nu sunt de așteptat să apară în circumstanțe normale și, prin urmare, nu sunt niciodată prevăzute. De exemplu, OutOfMemoryError, StackOverflowError și ThreadDead sunt astfel de erori. Metodele nu ar trebui să aibă niciodată gestionari pentru erori.

Care este diferența dintre excepție și eroare?

Atât erorile, cât și excepțiile sunt apariții nedorite în timpul execuției unui program. Cu toate acestea, au diferențe cheie. Excepțiile pot fi prevăzute de programator, în timp ce o eroare este greu de prevăzut. Excepțiile pot fi bifate sau debifate. Dar erorile sunt întotdeauna neverificate. Excepțiile indică de obicei o eroare cauzată de programator. Cu toate acestea, erorile apar din cauza unei erori de sistem sau a unei utilizări necorespunzătoare a unei resurse. Prin urmare, excepțiile ar trebui tratate la nivel de aplicație, în timp ce erorile ar trebui să fie tratate la nivel de sistem (doar dacă este posibil). După gestionarea unei excepții, sunteți garantat că veți reveni la fluxul normal de program. Dar chiar dacă este detectată o eroare, este posibil ca programatorul să nu știe cum să o gestioneze în primul rând. Spre deosebire de gestionarea tradițională a erorilor, excepțiile permit separarea codului de gestionare a erorilor de codul obișnuit.

Recomandat: