5
SPA1 - Izuzeci Doni Pracner Strukture podataka i algoritmi 1 Izuzeci Doni Pracner @DoniPracner | [email protected] Izuzetak - pojam • Predstavlja nepravilnu situaciju u kojoj se program može naći Deljenje sa nulom Nepostojeći fajl pri čitanju Pogrešan tip podataka Daje mehanizam kojim se izuzetak može “uhvatiti” i eventualno omogućiti programu da nastavi dalje sa radom Tipovi izuzetaka u Javi Proveren (Checked) • Eksplicitno se navodi nakon imena metoda • Kompajler proverava da li će biti obrađen ako se javi • Obavezno je da postoje strukture za obradu Neproveren (Unchecked) • Ne navodi se nakon imena metoda • Kompajler ne proverava da li se obrađuje • Strukture za obradu mogu, a ne moraju da postoje 1

spa1-izuzeci

Embed Size (px)

DESCRIPTION

Strukture podatak i algoritni pmf novi sad

Citation preview

  • SPA1 - Izuzeci

    Doni Pracner

    Strukture podataka i algoritmi 1

    Izuzeci

    Doni Pracner@DoniPracner | [email protected]

    Izuzetak - pojam Predstavlja nepravilnu situaciju u kojoj se program moe nai

    Deljenje sa nulom Nepostojei fajl pri itanju Pogrean tip podataka

    Daje mehanizam kojim se izuzetak moe uhvatiti i eventualno omoguitiprogramu da nastavi dalje sa radom

    Tipovi izuzetaka u Javi

    Proveren (Checked)

    Eksplicitno se navodi nakon imena metoda Kompajler proverava da li e biti obraen ako se javi Obavezno je da postoje strukture za obradu

    Neproveren (Unchecked)

    Ne navodi se nakon imena metoda Kompajler ne proverava da li se obrauje Strukture za obradu mogu, a ne moraju da postoje

    1

  • Opta ema hvatanja izuetka

    public static void problematicanKod() throws Exception {}public static void mozdaBacaIzuzetak() {}public static void obrada() {

    //mora postojati 'try-catch' blok za prvi metodtry {

    problematicanKod();} catch (Exception ex) {

    // obrada izuzetka}// za drugi moze i ne moramozdaBacaIzuzetak();try {

    mozdaBacaIzuzetak();} catch (Exception ex) {

    // obrada izuzetka}

    }

    Neprovereni izuzeci u Javi

    RuntimeException izuzeci koji se deavaju u normalnom izvravanju Error ozbiljni problemi koji se tipino ne hvataju

    Primer problematinog koda

    public class T1{

    public static void pretvoriUBroj(String s){int i = Integer.parseInt(s);Svetovid.out.println("broj je", s);

    }

    public static void main(String[] args){pretvoriUBroj("2");pretvoriUBroj("dva");

    }}

    broj je 2Exception in thread "main" java.lang.NumberFormatException: For input string: "dva"

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

    2

  • at java.lang.Integer.parseInt(Integer.java:580)at java.lang.Integer.parseInt(Integer.java:615)at T1.pretvoriUBroj(T1.java:4)at T1.main(T1.java:10)

    Obrada izuzetka

    public class T1a {public static void pretvaranjeSaProverom(String s){try{int i = Integer.parseInt(s);Svetovid.out.println("broj je", s);

    } catch (Exception ex) {Svetovid.out.println("greska u pretvaranju");

    }

    }

    public static void main(String[] args){pretvaranjeSaProverom("2");pretvaranjeSaProverom("dva");

    }

    }

    broj je 2greska u pretvaranju

    Primer bacanja izuzetka

    public class T2 {

    public static void sviOsimDva(int br) throws Exception{if (br == 2) {throw new Exception("Broj 2 nije prihvatljiv!");

    }Svetovid.out.println("broj je", br);

    }

    // posto glavni metod ne obradjuje izuzetak, mora// deklarisati da ga baca!public static void main(String[] args) throws Exception{sviOsimDva(5);

    3

  • sviOsimDva(3);sviOsimDva(2);

    }}

    broj je 5broj je 3Exception in thread "main" java.lang.Exception: Broj 2 nije prihvatljiv!

    at T2.sviOsimDva(T2.java:5)at T2.main(T2.java:13)

    itanje iz fajla korienjem ugraenih biblioteka

    public static void citaj(String ime) {try (BufferedReader reader =

    Files.newBufferedReader(Paths.get(ime))) {String line = null;while ((line = reader.readLine()) != null) {System.out.println(line);

    }} catch (IOException x) {System.err.format("IOException: %s%n", x);

    }}

    Pisanje u fajl korienjem ugraenih biblioteka

    public static void pisi(String ime, String sadrzaj) {try (BufferedWriter writer =

    Files.newBufferedWriter(Paths.get(ime))) {writer.write(sadrzaj, 0, sadrzaj.length());

    } catch (IOException x) {System.err.format("IOException: %s%n", x);

    }}

    Izuzeci u okviru kursa SPA1 Nee biti detaljno obraivani Potrebno je znati za pojam izuzetka Da mnogi metodi bacaju izuzetke eksplicitno Da je mogue obraditi izuzetak i kad je provereni i neprovereni

    4

  • KRAJ

    5

    Strukture podataka i algoritmi 1IzuzeciIzuzetak - pojamTipovi izuzetaka u JaviOpta ema hvatanja izuetkaNeprovereni izuzeci u JaviPrimer problematinog kodaObrada izuzetka

    Primer bacanja izuzetkaitanje iz fajla korienjem ugraenih bibliotekaPisanje u fajl korienjem ugraenih bibliotekaIzuzeci u okviru kursa SPA1

    KRAJ