Razlika med izjemo in napako

Razlika med izjemo in napako
Razlika med izjemo in napako

Video: Razlika med izjemo in napako

Video: Razlika med izjemo in napako
Video: Symbian - ЖИВА В 2020?! 2024, Julij
Anonim

Izjema proti napaki

Ko se program izvaja, se zagotovo pojavi nepričakovano vedenje. To je lahko posledica izjem ali napak. Izjema so dogodki, ki lahko motijo normalen potek programa. Napake so stanja, ki se lahko štejejo za nepopravljiva. Izjeme so večinoma povezane s samo aplikacijo, napake pa s sistemom, v katerem se program izvaja.

Kaj je izjema?

Izjema je dogodek, ki lahko zmoti normalen potek programa. Ime izjema izhaja iz "izjemen dogodek". Vrženje izjeme je postopek ustvarjanja predmeta izjeme in njegove predaje izvajalnemu sistemu. Objekt izjeme ustvari metoda, v kateri je prišlo do izjeme. Objekt izjeme vsebuje koristne informacije, kot sta vrsta in opis izjeme. Ko sistem izvajalnega okolja prejme objekt izjeme, bo poskušal najti nekoga, ki bi ga obravnaval znotraj sklada klicev, tako da ga prečka v obratnem vrstnem redu (v katerem so bile klicane metode). Klicni sklad je urejen seznam metod, ki so bile poklicane pred metodo, v kateri je prišlo do izjeme. Izvajalni sistem je uspešen, če najde metodo z obravnavo izjem. Obravnavalec izjem je blok kode, ki lahko uradno obravnava omenjeno izjemo. Če sistem izvajalnega okolja najde ustrezno obravnavo (tj. tip izjeme se ujema z vrsto, ki jo je mogoče obravnavati), bo predmet izjeme posredoval obdelovalcu. To se imenuje lovljenje izjeme. Če pa izjeme ni mogoče obravnavati, se program prekine. V Javi so izjeme podedovane iz razreda Throwable. NullPointerException in ArrayIndexOutOfBoundsException sta dve pogosti izjemi v Javi.

Kaj je napaka?

Napaka je stanje, ki se lahko šteje za nepopravljivo, kot na primer program, ki zahteva večjo količino pomnilnika, kot je na voljo. Teh napak ni mogoče obravnavati med izvajanjem. Če pride do napake, se program prekine. V Javi napake podedujejo iz razreda Throwable. Napake običajno pomenijo resne težave, ki jih programer (ali aplikacija) ne bi smel poskušati ujeti. Napake so preprosto nenormalne razmere, za katere se v normalnih okoliščinah nikoli ne pričakuje, da se bodo pojavile, in zato niso nikoli predvidene. Takšne napake so na primer OutOfMemoryError, StackOverflowError in ThreadDead. Metode nikoli ne smejo imeti obdelovalcev za napake.

Kakšna je razlika med izjemo in napako?

Tako napake kot izjeme so nezaželen pojav med izvajanjem programa. Vendar pa imata ključne razlike. Izjeme lahko programer predvidi, napako pa je težko predvideti. Izjeme so lahko označene ali neoznačene. Toda napake so vedno nepreverjene. Izjeme običajno kažejo na napako, ki jo povzroči programer. Vendar se napake pojavijo zaradi sistemske napake ali neustrezne uporabe vira. Zato je treba izjeme obravnavati na ravni aplikacije, napake pa na sistemski ravni (le če je to mogoče). Po obravnavi izjeme se boste zagotovo vrnili v običajni tok programa. Toda tudi če je napaka ujeta, programer morda sploh ne ve, kako jo odpraviti. Za razliko od tradicionalnega obravnavanja napak izjeme omogočajo ločevanje kode za obravnavanje napak od običajne kode.

Priporočena: