Java - Izuzeci (Exeptions)


Izuzetak je neočekivani događaj koji se dogodi tokom izvođenja programa. Utiče na tok programskih uputa što može uzrokovati abnormalni prekid programa. Izuzetak se može dogoditi iz mnogo razloga. Neki od njih su:

  • Nevažeći korisnički unos
  • Kvar uređaja
  • Gubitak mrežne veze
  • Fizička ograničenja (nema memorije na disku)
  • Pogreške koda
  • Otvaranje nedostupne datoteke


Hijerarhija izuzetaka (Exception) Java

Sljedeća slika prikazuje pojednostavljeni dijagram hijerarhije izuzetaka u Javi.



Kao što možete vidjeti na gornjoj slici, klasa Throwable je korijenska klasa u hijerarhiji. Imajte na umu da se hijerarhija dijeli na dvije grane: Error i Exception.



Greške - Errors

Greške predstavljaju nepopravljive uslove kao što je nestanak memorije na virtualnom mašini Java (JVM), curenje memorije, greške pri prelijevanju steka, nekompatibilnost biblioteke, beskonačna rekurzija itd. Greške su obično izvan kontrole programera i ne bismo ih trebali pokušavati rješavati.



Izuzeci - Exceptions

Program može uhvatiti izuzetke i obraditi ih. Kad se u metodi dogodi izuzetak, on stvara objekt. Ovaj objekt naziva se objekt izuzetka. Sadrži informacije o izuzeetku, kao što su naziv i opis izuzetke i stanje programa kada se izuzetak dogodila. U nastavku ćete naučiti kako se nositi s tim izuzetcima. U ovoj lekciji sada ćemo se usredotočiti na različite vrste izuzetaka u Javi.



Vrste izuzetaka u Javi

Hijerarhija izuzetaka takođe ima dvije grane: RuntimeException i IOException.


1. RuntimeException

Izuzeci tokom izvođenja (runtime exception) nastaje zbog programske greške. Oni su takođe poznati kao nekontrolisani izuzeci. Ovi se izuzeci ne provjeravaju za vrijeme kompajliranja već za vrijeme izvođenja. Neki od uobičajenih izuzetaka za vrijeme izvođenja su:

  • Neispravna upotreba API-ja - IllegalArgumentException
  • Pristup null pokazivaču (nedostaje inicijalizacija varijable) - NullPointerException
  • Pristup nizu izvan granica - ArrayIndexOutOfBoundsException
  • Dijeljenje broja s 0 - ArithmeticException

O ovim greškama možete razmišljati na ovaj način. "Ako je to izuzetak za vrijeme izvođenja, vaša je greška". Izuzetak NullPointerException ne bi nastao da ste prije uporabe provjerili da li je varijabla inicijalizirana ili ne. Izuzetak ArrayIndexOutOfBoundsException se ne bi dogodila da ste testirali indeks niza prema granicama niza.


2. IOException

IOException je takođe poznat kao provjerena izuzetka. Prevoditelj ih provjerava u vrijeme kompajliranja i od programera se traži da postupi s tim izuzetkom. Neki od primjera provjerenih izuzetka su:

  1. Pokušaj otvaranja datoteke koja ne postoji rezultuje greškom FileNotFoundException
  2. Pokušaj čitanja iza kraja datoteke

Sada kada znate o izuzetcima, naučićete rukovanje izuzetcima u narednim lekcijama.