Professional Documents
Culture Documents
JAVA Izuzeci
JAVA Izuzeci
3 4
Primer za izuzetak koji se ne obrauje u kodu
Neuhvaeni izuzeci
class Izuzetak0 {
public static void main (String args[]) {
Ako se u kodu ne obradi izuzetak, obrauje ga Javin int d = 0;
izvrni sistem koji ispisuje tekst sa opisom izuzetka, int a = 7 / d;
stanje steka za metode od trenutka nastanka izuzetka i System.out.println(a);
zavrava program }
Primer: }
Pri deljenju nulom Javin izvrni sistem pravi izuzetak tipa java.lang.ArithmeticException: / by zero
ArithmeticException i baca ga at Izuzetak0.main(Izuzetak0.java:4)
Exception in thread "main"
java.lang.ArithmeticException: / by zero
13 14
Prvo izvravanje programa, ne zadaju se argumenti try naredbe su ugnjedene i u sledeem sluaju:
C:\java UgnjezdeniTry metod A ima try blok
Broj argumenata = 0
metod B ima try blok
Spoljanji try: java.lang.ArithmeticException: / by zero
metod A se poziva unutar try bloka metoda B
Drugo izvravanje programa, zadaje se jedan argument U ovom primeru try blok metoda A je ugnjeden
C:\java UgnjezdeniTry x unutar try bloka metoda B
Broj argumenata = 1
Spoljanji try: java.lang.ArithmeticException: / by zero
Javini ugraeni izuzeci imaju dva konstruktora, jedan Za metod koji baca izuzetke mora da se oznai koje
bez parametara i jedan iji je parametar znakovni niz koji izuzetke baca
je opis izuzetka Moraju se navesti svi izuzeci koje baca metod izuzev
Opis izuzetka se moe dohvatiti metodom izuzetaka tipa Error i RuntimeException ili njihovih
getMessage() koji je definisan u klasi Throwable potklasa
Izuzeci koji ne moraju da se navode nazivaju se
neproveravani izuzeci, a oni koji moraju da se navode
nazivaju se proveravani izuzeci
Ako se ne navedu izuzeci koje metod baca javlja se
greka u prevoenju
Opti oblik deklaracije metoda je
tip imeMetoda(listaParametara) throws listaIzuzetaka
27 28
Ispravan primer za throws
Primer za throws sa grekom class PrimerZaThrows {
static void bacanjeIzuzetka() throws
class PrimerZaThrows { IllegalAccessException {
static void bacanjeIzuzetka() { System.out.println("Unutar metoda.");
System.out.println("Unutar metoda."); throw new IllegalAccessException("proba");
throw new IllegalAccessException("proba"); }
} public static void main(String args[]) {
try {
public static void main(String args[]) {
bacanjeIzuzetka();
bacanjeIzuzetka();
}
} catch(IllegalAccessException e) {
} System.out.println("Uhvaen: " + e);
}
Izuzetak tipa IllegalAccessException je }
proveravani izuzetak i ako se ne u deklaraciji metoda koji }
ga baca javlja se greka u prevoenju
Unutar metoda.
29 Uhvaen: java.lang.IllegalAccessException: proba 30
Primer za finally
Rezervisana re finally class PrimerZaFinally {
static void metodA() {
Prilikom pojavljivanja i obrade izuzetka dolazi do try { // Izuzetak unutar try bloka
preskakanja pojedinih naredbi System.out.println("Unutar metoda A");
throw new RuntimeException("proba");
Naredbe koje se ne smeju peskoiti, npr. zatvaranje }
fajla, stavljaju se u blok finally finally {
Blok finally se izvrava uvek bez obzira da li se System.out.println("Metod A: finally blok");
}
pojavljuje izuzetak ili ne }
Ako se metod prekida iz bloka try/catch zbog static void metodB() {
pojave izuzetka ili zbog naredbe return, blok try {
finally se izvrava neposredno pre izlaska iz metoda System.out.println("Unutar metoda B");
return; // return unutar try bloka
Blok finally nije obavezan }
Naredba try mora imati bar jednu od naredbi catch finally {
ili finally System.out.println("Metod B: finally blok");
}
31 } 32
Primer za finally
static void metodC() { Rezultat izvravanja programa
try { // try bloka koji se ne prekida
System.out.println("Unutar metoda C"); C:\java PrimerZaFinally
} Unutar metoda A
finally { Metod A: finally blok
System.out.println("Metod C: finally blok"); Uhvaen izuzetak
} Unutar metoda B
} Metod B: finally blok
public static void main(String args[]) { Unutar metoda C
try { Metod C: finally blok
metodA();
}
catch (Exception e) {
System.out.println("Uhvaen izuzetak");
}
metodB();
metodC();
}
} 33 34
35 36
Primer za pravljenje izuzetka
Primer za pravljenje izuzetka
class PrimerZaIzuzetak {
static void racunaj(int a) throws Izuzetak {
class Izuzetak extends Exception {
System.out.println("racunaj(" + a + ")");
private int podatak;
if(a > 10)
throw new Izuzetak(a);
Izuzetak(int a) { System.out.println("Normalan izlaz");
podatak = a; }
} public static void main(String args[]) {
try {
public String toString() { racunaj(1);
return "Izuzetak[" + podatak + "]"; racunaj(20);
} }
catch (Izuzetak e) {
}
System.out.println("Uhvaen " + e);
}
}
37 } 38
39 40