Diferența dintre excepție și eroare

Anonim

Excepție vs Eroare

Comportamentul neașteptat este obligatoriu când un program este în desfășurare. Acest lucru se datorează excepțiilor sau erorilor. Excepțiile sunt evenimente care pot deranja fluxul normal de programe. Erori sunt condiții care pot fi considerate irecuperabile. Excepțiile sunt în mare parte legate de cererea î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 deranja fluxul normal al programului. Excepția numelui provine de la "eveniment excepțional". Aruncarea unei excepții este procesul de creare a unui obiect excepțional și de înlăturare a acestuia în sistemul de rulare. Obiectul excepție este creat de metoda în care a apărut excepția. Obiectul excepție conține informații utile, cum ar fi tipul și descrierea excepției. Când sistemul de executare primește obiectul excepțional, acesta va încerca să găsească pe cineva care să o manipuleze în stackul de apeluri traversând-o în ordine inversă (în care au fost apelate metodele). Stackul de apeluri este lista de metode comandate, care au fost numite î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ție. Excepție de manipulare este un bloc de cod care se poate ocupa oficial excepția menționată. Dacă sistemul de rulare găsește un handler adecvat (de exemplu, tipul de excepție se potrivește cu tipul care poate fi manipulat), acesta va trece obiectul excepție la manipulant. Aceasta se numește capturarea excepției. Cu toate acestea, dacă excepția nu poate fi rezolvată, programul se va termina. În Java, excepțiile sunt moștenite din 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 manipulate în timpul rulării. Dacă apare o eroare, programul se va termina. În Java, erorile moștenesc din clasa Throwable. Erori, de obicei, reprezintă probleme grave pe care programatorul (sau aplicația) nu ar trebui să încerce să le captureze. Erori sunt pur și simplu condiții anormale, care nu se așteaptă niciodată să apară în circumstanțe normale și, prin urmare, niciodată prevăzute. De exemplu, OutOfMemoryError, StackOverflowError și ThreadDead sunt astfel de erori. Metodele nu ar trebui să aibă niciodată de manipulatori pentru erori.

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

Ambele erori și excepții sunt apariția nedorită în timpul executării unui program. Cu toate acestea, ele au diferențe-cheie. Excepțiile pot fi prevăzute de către programator, în timp ce o greșeală este dificil de prevăzut.Excepțiile pot fi bifate sau debifate. Dar erorile sunt întotdeauna necontrolate. 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 să fie tratate la nivelul cererii, în timp ce erorile ar trebui să fie luate în considerare la nivelul sistemului (numai dacă este posibil). După tratarea unei excepții, vi se garantează că veți reveni la fluxul normal de programe. Dar, chiar dacă o eroare este prinsă, programatorul ar putea să nu știe cum să se ocupe de el în primul rând. Spre deosebire de tratarea tradițională a erorilor, excepțiile permit separarea codului de eroare de la codul obișnuit.