Sintaksa:
Sintaksa pokušaj-ulov-konačno blok je dan u nastavku.
probajizjava 1… N
catch (ExceptiontType var)
izjava 1… N
napokon
izjava 1… N
Ovdje, ako se unutar bloka try dogodi iznimka, tada će se iznimka baciti na catch blok, a konačno block ovdje nije obavezan. Kôd na kraju bloka izvršava bez obzira javlja li se iznimka ili ne.
Primjer-1: Obrada iznimke s jednim blokom ulova
Sljedeći primjer prikazuje upotrebu rukovanja iznimkama pomoću jednog bloka ulova. Naziv datoteke bit će uzet kao ulaz i stvorit će objekt BufferedReader da otvori datoteku za čitanje. Ako naziv datoteke postoji, tada će se sadržaj datoteke čitati redak po redak i ispisivati. Ako datoteka ne postoji, generirat će se iznimka i ispisat će se poruka o pogrešci.
uvoz java.io.BufferedReader;uvoz java.io.FileReader;
uvoz java.io.IOException;
uvoz java.util.Skener;
javni razred osim1
javna statička void glavna (String [] args)
// Stvaranje objekta skenera
Skener u = novi skener (sustav.u);
Sustav.van.print ("Unesite naziv datoteke:");
// Uzmi niz podataka od korisnika
StringName File = u.Sljedeći();
probaj
// Stvaranje objekta čitača
Čitač BufferedReader = novi BufferedReader (novi FileReader (Ime datoteke));
// Pročitajte prvi redak ako datoteka postoji
Linija niza = čitač.readLine ();
dok (linija != null)
// Ispis redaka
Sustav.van.println (linija);
// Pročitajte sljedeći redak
linija = čitač.readLine ();
// Zatvorite objekt čitača
čitač.Zatvoriti();
// Zatvorite objekt skenera
u.Zatvoriti();
catch (IOException e)
// Ispis poruke pogreške
Sustav.van.println ("Datoteka ne postoji");
Izlaz:
U sljedećem izlazu, 'zdravo.txt ' daje se kao naziv datoteke koji ne postoji. Dakle, ispisuje se sljedeća poruka.
Sljedeći put, datoteka1.txt daje se kao postojeće ime datoteke, a izlaz prikazuje sadržaj datoteke.
Primjer-2: Rukovanje iznimkama s višestrukim blokom ulova
Kako možete koristiti više blokova catch za obradu više izuzetaka prikazano je u sljedećem primjeru. Ovdje su proglašena tri bloka ulova. Prvi blok catch uhvatit će aritmetičku pogrešku kad se izvrši bilo koja nelogična aritmetička operacija. Drugi catch bock uhvatit će pogrešku izvan dometa niza kada će se pokušati očitati vrijednost indeksa niza koja ne postoji. Treći blok catch uhvatit će pogrešku numeričke vrijednosti kada je bilo koji znak ili vrijednost niza dana kao vrijednost niza. U kodu se deklarira niz s četiri indeksa i inicijalizira s cjelobrojnim vrijednostima koje će se preuzeti od korisnika. Vrijednosti polja ispisuju se pomoću petlje. Na kraju probnog bloka vrši se operacija podjele.
uvoz java.util.Skener;javni razred osim2
javna statička void glavna (String [] args)
probati
// Deklariraj numerički niz
int num_arr [] = novi int [4];
// Stvaranje objekta skenera
Skener u = novi skener (sustav.u);
Sustav.van.println ("Unesite četiri broja:");
// Ponovite petlju četiri puta
za (int i = 0; i < 4; i++)
// Ulazni broj
int n = in.nextInt ();
// Dodijeli vrijednost nizu
num_arr [i] = n;
Sustav.van.println ("Vrijednosti niza su:");
// Pet puta ponovite petlju
za (int i = 0; i < 4; i++)
// Ispis vrijednosti polja
Sustav.van.println (num_arr [i]);
// Dijelimo i ispisujemo vrijednost
int broj = 50/0;
Sustav.van.ispis (broj);
// Zatvorite objekt skenera
u.Zatvoriti();
ulov (ArithmeticException e)
Sustav.van.println ("Nijedan broj nije djeljiv s 0");
catch (ArrayIndexOutOfBoundsException e)
Sustav.van.println ("Dogodila se vrijednost indeksa izvan polja");
ulov (izuzetak e)
Sustav.van.println ("Vrijednost broja nije navedena");
Izlaz:
Sljedeći izlaz pokazuje da su vrijednosti polja pravilno umetnute i ispisane, ali se izvršava treći blok catch jer je 50 podijeljeno s 0, što je pogreška.
Program se izvodi po drugi put. Kada se vrijednost niza daje kao vrijednost polja, generira se druga iznimka i izvršava se izraz drugog bloka catch.
Primjer-3: Rukovanje iznimkama s blokom try-catch-napokon
U sljedećem primjeru prikazana je uporaba konačno bloka s blokom try-catch. Kôd napokon bloka izvršava se ako se dogodi iznimka ili ne. U kodu će se korisniku uzeti cijela vrijednost. Ako korisnik daje bilo koju vrijednost niza, tada InputMismatchException
generirat će i ispisati poruku iz bloka catch. Objekt skenera bit će zatvoren u konačno blokiraj ako se iznimka generira ili ne.
uvoz java.util.Skener;uvoz java.util.InputMismatchException;
javni razred osim3
javna statička void glavna (String [] args)
// Stvaranje objekta skenera
Skener u = novi skener (sustav.u);
Sustav.van.ispis ("Unesite broj:");
probaj
// Uzmi niz podataka od korisnika
int broj = u.nextInt ();
// Ispis broja
Sustav.van.println ("Vrijednost broja =" + broj);
catch (InputMismatchException e)
// Ispis poruke o pogrešci
Sustav.van.println ("Vrijednost niza nije prihvaćena.");
napokon
// Zatvorite objekt skenera
u.Zatvoriti();
Sustav.van.println ("Ukinuto iz programa");
Izlaz:
78 daje se kao ulazna vrijednost u sljedećem izlazu nakon izvršavanja koda. Dakle, ovdje se ne generira iznimka. Poruka iz konačno bloka ispisuje se kasnije.
Sljedeći, zdravo daje se kao ulaz nakon izvršavanja koda koji je niz. Dakle, generira se iznimka i ispisuje se poruka o pogrešci iz bloka catch. Poruka iz konačno bloka ispisuje se kasnije.
Zaključak:
Rukovanje iznimkama vrlo je važna i korisna značajka bilo kojeg programskog jezika koja se može koristiti za skrivanje stvarne poruke pogreške od korisnika i pružanje poruke razumljive pogreške za korisnika kako bi pogrešku pravilno razumio. Ovaj vodič pomaže korisniku da nauči različite načine primjene rukovanja iznimkama na Javi i učini svoj kod prikladnijim.