1/27
Skup pitanja i odgovora koji pokrivaju ključne pojmove o radu sa izuzecima u Javi: vrste izuzetaka, try-catch-finally, try-with-resources, prosleđivanje, generisanje, definisanje novih tipova i klasu Throwable.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Šta predstavlja izuzetak u Javi?
Objekat (instanca klase Exception ili njenih potklasa) koji signalizuje pojavu greške tokom izvršavanja programa.
Koje tri operacije možemo izvršiti nad izuzecima?
Generisati (throw), obraditi (catch) ili proslediti (throws) izuzetak.
Koje dve osnovne vrste izuzetaka postoje u Javi i koja je razlika?
Proveravani (checked) – moraju biti obrađeni ili prosleđeni; neproveravani (unchecked) – nije obavezno ni obraditi ni proslediti.
Kojom logičkom greškom su najčešće uzrokovani neproveravani (unchecked) izuzeci?
Najčešće su posledica programerskog baga (semantičke greške) koji ne zavisi od spoljnih faktora.
Koja je nadklasa svih izuzetaka u Javi?
java.lang.Exception (koja zajedno sa Error nasleđuje Throwable).
Koja klasa je koren svih neproveravanih (unchecked) izuzetaka?
java.lang.RuntimeException.
Kako kreiramo novi proveravani izuzetak?
Definišemo klasu koja nasleđuje Exception (direktno ili indirektno) i ne nasleđuje RuntimeException.
Kako kreiramo novi neproveravani izuzetak?
Definišemo klasu koja nasleđuje RuntimeException.
Nabroj bar tri tipična neproveravana izuzetka iz paketa java.lang.
NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException, ClassCastException, NumberFormatException…
Šta se dešava ako neproveravani izuzetak nije uhvaćen?
Program prekida rad, ispisuje se stack trace, jer se izuzetak propagira do JVM-a.
Šta se dešava kada main metoda propagira proveravani izuzetak do JVM-a?
Program se prekida i JVM ispisuje stack trace tog proveravanog izuzetka.
Čemu služi try-catch-finally konstrukcija?
Odvaja kod normalnog toka od koda za obradu grešaka i obezbeđuje izvršavanje finally bloka za oslobađanje resursa.
Kada se finally blok izvršava?
Uvek – bez obzira da li se izuzetak desio, da li je uhvaćen ili se iz metoda izađe naredbom return.
Može li try blok imati više catch grana?
Da, moguće je navesti više catch grana za različite tipove izuzetaka.
Šta je multi-catch?
Jedna catch grana koja obrađuje više različitih tipova izuzetaka navedenih uz znak |.
Šta je try-with-resources?
Try sintaksa koja prima jedan ili više resursa (objekata koji implementiraju Closeable/AutoCloseable) i automatski ih zatvara na kraju bloka.
Da li try-with-resources mora sadržati catch ili finally?
Ne mora – resursi će biti zatvoreni automatski i bez tih blokova.
Kako metoda prosleđuje (propagira) proveravani izuzetak?
Deklariše ga u zaglavlju iza ključne reči throws.
Koja naredba se koristi za generisanje izuzetka?
throw izraz (npr. throw new IOException("Poruka"));
Šta se mora navesti u zaglavlju metode koja može baciti proveravani izuzetak?
Tip(ove) izuzetka posle ključne reči throws.
Kako izgleda osnovna forma definisanja sopstvenog tipa izuzetka?
javna klasa MojaGreska extends Exception { public MojaGreska(String msg){ super(msg); } }
Koje dve glavne potklase čine klasu Throwable?
Exception i Error.
Kakve su greške predstavljene klasom Error?
Greške JVM-a od kojih se aplikacija obično ne može oporaviti (npr. OutOfMemoryError, StackOverflowError).
Kada se može pojaviti StackOverflowError?
Kod beskonačne ili veoma duboke rekurzije koja prepunjava call stack.
Šta izaziva OutOfMemoryError?
Pokušaj da se alocira više memorije nego što JVM može da obezbedi (npr. ogromni nizovi).
Zašto se neproveravani (bug) izuzeci uglavnom ne hvataju već se greška otklanja?
Jer ukazuju na logički problem u kodu koji treba popraviti, a ne na izuzetan spoljašnji uslov.
Da li finally blok izvršava kada se iz try bloka izađe pomoću return?
Da, finally se i tada izvršava.
Šta se dešava prilikom automatskog zatvaranja resursa u try-with-resources?
Za svaki resurs se implicitno poziva njegova metoda close() nakon završetka try bloka (čak i ako se desi izuzetak).