Strukture podataka i algoritmi
2.7.5 Izuzeci u Javi

Java, donekle na zalost, sledi C++ i poseduje try, throw, catch mehanizam.

Medjutim, Java definise klasnu hijerarhiju za greske, tako da su sve greske specijalizacije klase exception.

Izuzeci se u Javi, kao i u Adi, prenose od metoda klase na pozivajuci metod, sve dok se ne naidje na try blok. Medjutim, metodi u Javi eksplicitno navode izuzetke koje mogu da generisu.

void readFromFile( String s ) throws IOException,
                     InterruptedException {
       ......
       }

try {
    readFromFile( "abc" );
    }
catch( FileNotFoundException e ) { ..... }
catch( IOException e) { .... }
catch( Exception e ) {
    // hvata bilo koju drugu gresku (Exception je "superklasa")
    ....
    }
finally {
    // Zavrsni kod - uvek se izvrsava
    }
Blok finally se izvrsava bez obzira da li je generisan neki izuzetak.

Iako su nasledili zbrku, autori Jave su uspeli da pojednostave sistem izuzetaka dovoljno da bi postao koristan. catch se pojavljuje kako bi prihvatio samo jedan parametar koji pripada klasi exception. Kao i u Adi, mnogi izuzeci su pre-definisani, ali takodje mozete da definisete i sopstvene.

Primetite da je problem precizne definicije Jave dugotrajan problem u racunarskoj industriji, zbog tendencije trenutnog prihvatanja "modnih krikova" pre nego sto oni dobiju sansu da budu potpuno i nedvosmisleno definisani. Ovo je dovelo do enormnih problema sa prenosivoscu i enormnih troskova za korisnike, koji su se mogli izbeci!

Nijedan profesionalni inzinjer ne bi napravio bilo koji sistem koristeci srafove sa nestandardnim navojima!

Dalje na Kako manipulisati greskama u C-u?
Nazad na Sadrzaj
© John Morris, 1998. Prevod sa engleskog, Dragan Stevanovic, 2002.