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!
Dalje na Kako manipulisati greskama u C-u? Nazad na Sadrzaj |