Java

Rukovanje Java iznimkama

Rukovanje Java iznimkama
Kada normalni tijek izvršavanja programa prekine bilo koju pogrešku, tada se to naziva iznimkom. Ovom vrstom događaja može se upravljati pomoću pokušaj-ulov-napokon blok. Iznimka je objekt koji se koristi za hvatanje pogreške i pokretanje izraza na temelju stanja pogreške koje se naziva rukovanje iznimkama. Rukovanjem iznimkama uglavnom se rješavaju dvije vrste pogrešaka. Ovi su sastavljeno vrijeme pogreške i vrijeme izvođenja pogreške. The vrijeme izvođenja pogreške se rješavaju rukovanjem iznimkama. U ovom vodiču objašnjeno je kako se možete nositi s iznimkama na Javi.

Sintaksa:

Sintaksa pokušaj-ulov-konačno blok je dan u nastavku.

probaj
izjava 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.

Kako razviti igru ​​na Linuxu
Prije deset godina malo je Linux korisnika predviđalo da će njihov omiljeni operativni sustav jednog dana biti popularna platforma za igranje komercij...
Luke komercijalnih igara s otvorenim kodom
Besplatne igre s otvorenim kodom i više platformi mogu se koristiti za igranje starih, kao i nekih prilično nedavnih naslova igara. U ovom će se člank...
Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...