Preverjena izjema v primerjavi z izjemo med izvajanjem
Izjema so posebne vrste dogodkov, ki lahko motijo normalen potek programa. Izjema imena izhaja iz "izjemnega dogodka". Metanje izjeme je postopek ustvarjanja predmeta izjeme in njegovega predajanja izvajalnemu sistemu. Ko izvajalni sistem prejme objekt izjeme, bo skušal najti nekoga, ki ga bo obdelal znotraj sklada 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 izvajalni sistem najde ustreznega upravljavca, bo objekt izjeme posredoval upravljavcu. Temu pravimo ujeti izjemo. Če pa izjeme ni mogoče obravnavati, program preneha. V Javiizjeme podedujejo iz razreda Throwable. Označene izjeme so izjeme, pri katerih prevajalnik vsiljuje ravnanje. Izjeme med izvajanjem so vrsta izjem, ki jih prevajalnik ne preveri.
Kaj je preverjena izjema?
Izbrane izjeme so bodisi predmeti razreda java.lang.exception bodisi njegovi podrazredi (razen java.lang. RuntimeException in njegovih podrazredov). Označene izjeme so "preverjene" v času prevajanja. To pomeni, da mora programer te izjeme ujeti ali odstraniti, sicer bi se prevajalnik pritožil (povzroča napako prevajalnika). Zaradi tega so številne preverjene izjeme programerjem zelo dobro znane. IOException in njegovi podrazredi so na primer preverjene izjeme in kadarkoli se programer ukvarja z dostopom ali spreminjanjem datoteke, prevajalnik preveri, ali programer skrbi za vse možne IOExceptions.
Kaj je izjema med izvajanjem?
Izjeme med izvajanjem so sestavljene iz java.lang. RuntimeException in vseh njegovih podrazredov. Teoretično gledano služijo istemu namenu kot preverjene izjeme in jih je mogoče vrniti ali obdelati kot preverjene izjeme, vendar prevajalnik ne izvrši njihovega ravnanja. Zato izjeme med izvajanjem spadajo v družino nepreverjenih izjem. NullPointerException, NumberFormatEception, ClassCastException in ArrayIndexOutOfBoundsException so pogoste izjeme med izvajanjem v Javi.
Kakšna je razlika med preverjeno izjemo in izjemo med izvajanjem?
Čeprav so preverjene izjeme in izjeme med izvajanjem nezaželen pojav med izvajanjem programa, imajo svoje razlike. Ravnanje s preverjenimi izjemami uveljavlja prevajalnik, izjeme med izvajanjem pa ne. Zato je treba preverjene izjeme metati ali obravnavati, da se koda prevede, vendar glede zahtev med izvajanjem taka zahteva ne obstaja. Zato izjeme med izvajanjem spadajo v kategorijo nepreverjenih izjem, skupaj z napakami.
Pomanjkljivost pri preverjenih izjemah je, da jo mora programerka obvladati, tudi če ne ve, kako. Torej, če programer vrže novo izjemo, ne da bi ovit izvirnik, bo sled sklada, ki pripada izvirni izjemi, izgubljen. Tu pridejo prav izjeme med izvajanjem. Ker je mogoče vse izjeme med izvajanjem obravnavati na enem mestu, zato lahko programerji napišejo manj količine kode. Po drugi strani pa, ker je treba ujeti preverjene izjeme, programerja ne preseneča. Vedno bo vedela, katero preverjeno izjemo lahko vrže določena metoda. V nasprotju s tem lahko različne izvajalne izjeme vržemo brez vednosti programerja.