Razlika između provjerenog izuzetka i iznimka vremena izvršavanja

Razlika između provjerenog izuzetka i iznimka vremena izvršavanja
Razlika između provjerenog izuzetka i iznimka vremena izvršavanja

Video: Razlika između provjerenog izuzetka i iznimka vremena izvršavanja

Video: Razlika između provjerenog izuzetka i iznimka vremena izvršavanja
Video: Что такое протокол FTP и зачем он нужен. 2024, Juli
Anonim

Provjereni izuzetak vs izuzetak vremena rada

Izuzeci su posebne vrste događaja, koji mogu poremetiti normalan tok programa. Naziv izuzetak dolazi od "izuzetan događaj". Izbacivanje izuzetka je proces kreiranja objekta izuzetka i predaje ga runtime sistemu. 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). 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 runtime sistem pronađe odgovarajući rukovalac, 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 klasu Throwable. Provjereni izuzeci su izuzeci na kojima rukovanje provodi kompajler. Izuzeci vremena izvršavanja su vrsta izuzetaka koje kompajler ne provjerava.

Šta je provjereni izuzetak?

Provjereni izuzeci su ili objekti klase java.lang.exception ili njene podklase (osim java.lang. RuntimeException i njegovih podklasa). Provjereni izuzeci se "provjeravaju" u vrijeme kompajliranja. To znači da programer mora ili uhvatiti ili izbaciti ove izuzetke, inače bi se kompajliranje žalilo (izazivajući grešku kompajlera). Zbog toga su mnogi provjereni izuzeci vrlo dobro poznati programerima. Na primjer, IOException i njegove podklase su provjereni izuzeci, i kad god se programer bavi pristupom ili modificiranjem datoteke, kompajler provjerava da bi se uvjerio da se programator pobrine za sve moguće IOExceptions.

Šta je Runtime Exception?

Runtime Exceptions sastoje se od java.lang. RuntimeException i svih njegovih podklasa. Teoretski govoreći, oni služe istoj svrsi kao i provjereni izuzeci, i mogu se izbaciti ili rukovati kao provjereni izuzeci, ali rukovanje njima ne provodi kompajler. Stoga izuzeci vremena izvršavanja pripadaju porodici neprovjerenih izuzetaka. NullPointerException, NumberFormatEception, ClassCastException i ArrayIndexOutOfBoundsException su uobičajeni izuzeci vremena izvršavanja u Javi.

Koja je razlika između provjerenog izuzetka i iznimke u vremenu rada?

Iako su i provjereni izuzeci i izuzeci vremena izvođenja neželjena pojava tokom izvršavanja programa, oni imaju svoje razlike. Provjereno rukovanje izuzecima provodi kompajler, ali izuzeci vremena izvođenja nisu. Stoga, provjereni izuzeci moraju biti izbačeni ili obrađeni da bi se kod mogao prevesti, ali ne postoji takav zahtjev u vezi s iznimkama u vrijeme izvođenja. Shodno tome, izuzeci vremena izvršavanja pripadaju kategoriji neprovjerenih izuzetaka zajedno sa greškama.

Nedostatak kod provjerenih izuzetaka je to što programer mora to riješiti čak i ako ne zna kako. Dakle, ako programer samo izbaci novi izuzetak bez premotavanja originala, trag steka koji pripada originalnom izuzetku će biti izgubljen. Ovo je mjesto gdje izuzeci vremena izvršavanja dobro dolaze. Budući da se svi izuzeci vremena izvršavanja mogu rukovati na jednom mjestu, tako programeri mogu napisati manje količine koda. S druge strane, pošto provjereni izuzeci moraju biti uhvaćeni, nema iznenađenja za programera. Ona će uvijek znati koji provjereni izuzetak može biti izbačen određenom metodom. Suprotno tome, različiti izuzeci vremena izvršavanja mogu biti izbačeni bez znanja programera.

Preporučuje se: