Preverjena izjema v primerjavi z izjemo izvajanja
Izjeme so posebne vrste dogodkov, ki lahko motijo normalen pretok programa. Ime izjema izvira iz "izjemnega dogodka". Odstranjevanje izjeme je postopek ustvarjanja predmeta izjeme in njegove predaje izvajalnemu sistemu. Ko sistem izvajanja prejme objekt izjeme, bo poskusil najti nekoga, ki bi ga upravljal v skladbi klicev, tako da ga bo preusmeril v obratnem vrstnem redu (v katerem so bile klicane metode). Izvajalni sistem je uspešen, če najde metodo z obdelovalcem izjem. Obdelovalec izjem je blok kode, ki lahko uradno obravnava omenjeno izjemo. Če sistem izvajanja najde ustrezen upravljavec, bo predmet izjeme posredoval obdelovalcu. Temu rečemo lovljenje izjeme. Če izjeme ni mogoče obravnavati, se program ustavi. V Javi izjeme podedujejo iz razreda Throwable. Preverjene izjeme so izjeme, pri katerih upravljavec izvaja prevajalnik. Izjeme med izvajanjem so vrsta izjem, ki jih ne preveri prevajalnik.
Kaj je preverjena izjema?
Preverjene izjeme so bodisi predmeti razreda java.lang.exception ali njihovi podklasi (razen java.lang.RuntimeException in njegovih podrazredov). Preverjene izjeme so "preverjene" v času prevajanja. To pomeni, da mora programer te izjeme ujeti ali vrgel ali pa bi se kompakt pritožil (povzroči napako prevajalnika). Zaradi tega so programerjem zelo znane številne preverjene izjeme. Na primer, IOException in njegovi podklasi so preverjene izjeme, in kadar koli se programer ukvarja z dostopom ali spreminjanjem datoteke, prevajalnik preveri, da programer poskrbi za vse možne IOExceptions.
Kaj je izjema pri izvajanju?
Izjeme med izvajanjem sestavljajo java.lang.RuntimeException in vse njene podrazrede. Teoretično gledano služijo enakemu namenu kot preverjene izjeme in jih lahko vržemo ali z njimi ravnamo kot preverjene izjeme, vendar prevajalnik ne ravna z njimi. Zato izjeme med izvajanjem spadajo v družino nepreverjenih izjem. NullPointerException, NumberFormatEception, ClassCastException in ArrayIndexOutOfBoundsException so pogoste izjeme izvajanja na Javi.
Kakšna je razlika med preverjeno izjemo in izjemo izvajanja?
Čeprav so tako preverjene izjeme kot izjeme med izvajanjem neželeni pojav med izvajanjem programa, imajo svoje razlike. Preverjeno ravnanje z izjemami uveljavlja prevajalnik, vendar izjeme med izvajanjem ne. Zato je treba preverjene izjeme zapustiti ali obdelovati, da se koda zbere, vendar glede izjem med izvajanjem ni take zahteve. Posledično izjeme med izvajanjem sodijo v kategorijo nenadzorovanih izjem in napak.
Slabost pri preverjenih izjemah je, da jo mora programer obvladati, tudi če ne ve, kako to storiti. Torej, če programer samo vrže novo izjemo, ne da bi zaviral izvirnik, bo sled skladnosti, ki pripada prvotni izjemi, izgubljen. Tukaj pridejo v poštev izjeme med izvajanjem. Ker je mogoče na enem mestu obdelati vse izjeme med izvajanjem, programerji lahko zapišejo manjše količine kode. Po drugi strani pa, ker morajo biti ujete preverjene izjeme, programer ni presenečenje. Vedno bo vedela, katero preverjeno izjemo bi lahko vrgla določena metoda. V nasprotju s tem se lahko različne izjeme med izvajanjem vržejo brez vednosti programerja.