Razlika između izuzetka i greške

Razlika između izuzetka i greške
Razlika između izuzetka i greške

Video: Razlika između izuzetka i greške

Video: Razlika između izuzetka i greške
Video: MeeGo - забытая система Nokia. 2024, Juli
Anonim

Izuzetak vs greška

Neočekivano ponašanje je obavezno kada je program pokrenut. To može biti zbog izuzetaka ili grešaka. Izuzetak su događaji koji mogu poremetiti normalan tok programa. Greške su stanja koja se mogu smatrati nepopravljivima. Izuzeci se uglavnom odnose na samu aplikaciju, dok se greške odnose na sistem na kojem se program izvodi.

Šta je izuzetak?

Izuzetak je događaj koji može poremetiti normalan tok programa. Naziv izuzetak dolazi od "izuzetan događaj". Izbacivanje izuzetka je proces kreiranja objekta izuzetka i predaje ga runtime sistemu. Objekt iznimke kreiran je metodom u kojoj se dogodio izuzetak. Objekt Exception sadrži korisne informacije kao što su tip i opis izuzetka. Kada runtime sistem primi objekt izuzetka, pokušat će pronaći nekoga tko će njime upravljati unutar steka poziva tako što će ga obići obrnutim redoslijedom (u kojem su metode pozvane). Stog poziva je uređena lista metoda koje su pozvane prije metode u kojoj se dogodio izuzetak. Runtime sistem je uspješan ako pronađe metodu s obrađivačem izuzetaka. Rukovalac izuzetkom je blok koda koji može službeno rukovati navedenim izuzetkom. Ako sistem vremena izvršavanja pronađe odgovarajući rukovalac (tj. tip izuzetka odgovara tipu kojim se može rukovati), on će proslijediti objekt izuzetka rukovaocu. Ovo se zove hvatanje izuzetka. Međutim, ako se izuzetak ne može obraditi, program će se prekinuti. U Javi, izuzeci nasljeđuju 'Throwable class'. NullPointerException i ArrayIndexOutOfBoundsException su dva uobičajena izuzetka u Javi.

Šta je greška?

Greška je stanje koje se može smatrati nepopravljivim, kao što je program koji zahtijeva količinu memorije veću od raspoložive. Ove greške se ne mogu rukovati tokom izvođenja. Ako dođe do greške, program će se prekinuti. U Javi, greške se nasljeđuju od klase Throwable. Greške obično označavaju ozbiljne probleme koje programer (ili aplikacija) ne bi trebalo da pokušava da uhvati. Greške su jednostavno abnormalni uslovi, za koje se nikada ne očekuje da će se pojaviti u normalnim okolnostima, pa stoga nikada nisu ni predviđeni. Na primjer, OutOfMemoryError, StackOverflowError i ThreadDead su takve greške. Metode nikada ne bi trebale imati obrađivače grešaka.

Koja je razlika između izuzetka i greške?

I greške i izuzeci su neželjena pojava tokom izvršavanja programa. Međutim, one imaju ključne razlike. Programer može predvidjeti izuzetke, dok je grešku teško predvidjeti. Izuzeci mogu biti označeni ili poništeni. Ali greške su uvijek neprovjerene. Izuzeci obično ukazuju na grešku koju uzrokuje programator. Međutim, greške se javljaju zbog sistemske greške ili neprikladne upotrebe resursa. Stoga, izuzecima treba rukovati na nivou aplikacije, a greške treba voditi računa na nivou sistema (samo ako je moguće). Nakon rukovanja izuzetkom, garantirano ćete se vratiti na normalan tok programa. Ali čak i ako se greška uhvati, programer možda neće znati kako da se nosi sa njom. Za razliku od tradicionalnog rukovanja greškama, izuzeci dozvoljavaju odvajanje koda za rukovanje greškama od redovnog koda.

Preporučuje se: