Sintakse:
Sintakse mēģiniet noķert-beidzot bloks ir dots zemāk.
izmēģināt1. paziņojums… N
nozveja (ExceptiontType var)
1. paziņojums… N
beidzot
1. paziņojums… N
Ja mēģinājuma blokā rodas izņēmums, izņēmums tiks izmests uz bloķēšanas bloku, un pēdējais bloks šeit nav obligāts. Pēdējā bloka kods izpilda neatkarīgi no tā, vai notiek izņēmums.
1. piemērs: izņēmumu apstrāde ar vienu nozvejas bloku
Šis piemērs parāda izņēmumu apstrādes izmantošanu, izmantojot vienu nozvejas bloku. Faila nosaukums tiks uzskatīts par ievadi un izveidos BufferedReader objektu, lai atvērtu failu lasīšanai. Ja faila nosaukums pastāv, faila saturs tiks lasīts pa rindai un izdrukāts. Ja faila nav, tiks izveidots izņēmums un tiks izdrukāts kļūdas ziņojums.
ievest java.io.BufferedReader;ievest java.io.FileReader;
ievest java.io.IOException;
ievest java.util.Skeneris;
publiskā klase, izņemot1
public static void main (String [] args)
// Izveidojiet skenera objektu
Skeneris ir = jauns skeneris (sistēma.in);
Sistēma.ārā.print ("Ievadiet faila nosaukumu:");
// Paņemiet virknes datus no lietotāja
Virknes faila nosaukums = iekš.Nākamais();
izmēģināt
// Izveidojiet lasītāja objektu
BufferedReader reader = jauns BufferedReader (jauns FileReader (FileName));
// Izlasiet pirmo rindiņu, ja fails pastāv
Stīgu līnija = lasītājs.lasītLīnija ();
kamēr (līnija != null)
// Izdrukājiet līniju
Sistēma.ārā.println (līnija);
// Lasiet nākamo rindu
līnija = lasītājs.readLine ();
// Aizveriet lasītāja objektu
lasītājs.aizvērt ();
// Aizveriet skenera objektu
iekšā.aizvērt ();
nozveja (IOException e)
// Izdrukājiet kļūdas ziņojumu
Sistēma.ārā.println ("Fails neeksistē");
Izeja:
Šajā izvadē, 'Sveiki.txt ' tiek norādīts kā faila nosaukums, kas neeksistē. Tātad tiek izdrukāts šāds ziņojums.
Nākamreiz, fails1.txt tiek dots kā esošais faila nosaukums, un izvade parāda faila saturu.
2. piemērs: izņēmumu apstrāde ar vairāku nozvejas bloku
Kā jūs varat izmantot vairākus uztveršanas blokus, lai apstrādātu vairākus izņēmumus, ir parādīts nākamajā piemērā. Šeit tiek deklarēti trīs ķeršanas bloki. Pirmais ķeršanas bloks noķers aritmētisko kļūdu, kad tiek veikta jebkura neloģiska aritmētiskā darbība. Otrais uztveršanas bloks noķers masīva ārpus diapazona kļūdu, kad tiks mēģināts nolasīt masīva indeksa vērtību, kuras nav. Trešais nozvejas bloks noķers skaitliskās vērtības kļūdu, ja jebkura masīva vai virknes vērtība tiek dota kā masīva vērtība. Kodā tiek deklarēts masīvs ar četriem indeksiem un inicializēts ar veselā skaitļa vērtībām, kas tiks ņemtas no lietotāja. Masīva vērtības tiek izdrukātas, izmantojot cilpu. Mēģinājuma bloka beigās tiek veikta sadalīšanas operācija.
ievest java.util.Skeneris;publiskā klase, izņemot2
public static void main (String [] argumenti)
mēģiniet
// Deklarēt skaitlisku masīvu
int num_arr [] = jauns int [4];
// Izveidojiet skenera objektu
Skeneris ir = jauns skeneris (sistēma.in);
Sistēma.ārā.println ("Ievadiet četrus ciparus:");
// Atkārtojiet cilpu četras reizes
par (int i = 0; i < 4; i++)
// Ieejas numurs
int n = iekšā.nextInt ();
// Piešķirt masīvam vērtību
num_arr [i] = n;
Sistēma.ārā.println ("Masīva vērtības ir:");
// Piecas reizes atkārtojiet cilpu
par (int i = 0; i < 4; i++)
// Izdrukājiet masīva vērtības
Sistēma.ārā.println (num_arr [i]);
// Sadaliet un izdrukājiet vērtību
int num = 50/0;
Sistēma.ārā.drukāt (num);
// Aizveriet skenera objektu
iekšā.aizvērt ();
nozveja (ArithmeticException e)
Sistēma.ārā.println ("Neviens skaitlis nav dalāms ar 0");
nozveja (ArrayIndexOutOfBoundsException e)
Sistēma.ārā.println ("Notika masīva indeksa vērtība");
nozveja (izņēmums e)
Sistēma.ārā.println ("Skaitļa vērtība nav norādīta");
Izeja:
Šī izeja parāda, ka masīva vērtības ir ievietotas un pareizi izdrukātas, bet trešais bloķēšanas bloks tiek izpildīts, jo 50 tiek dalīts ar 0, kas ir kļūda.
Programma tiek izpildīta otro reizi. Kad virknes vērtība tiek dota kā masīva vērtība, tiek ģenerēts otrais izņēmums un izpildīts otrā uztveršanas bloka paziņojums.
3. piemērs: izņēmuma apstrāde ar bloķēšanas mēģinājumu noķert
Galīgā bloka izmantošana ar bloķēšanas mēģinājumu ir parādīta šajā piemērā. Galīgā bloķēšanas kods tiek izpildīts, ja rodas izņēmums vai nē. Kodā no lietotāja tiks ņemta vesela skaitļa vērtība. Ja lietotājs norāda virknes vērtību, tad InputMismatchException
ģenerēs un izdrukās ziņojumu no uztveršanas bloka. Skenera objekts tiks aizvērts beidzot bloķēt, ja izņēmums rada vai nē.
ievest java.util.Skeneris;ievest java.util.InputMismatchException;
publiskā klase, izņemot3
public static void main (String [] args)
// Izveidojiet skenera objektu
Skeneris ir = jauns skeneris (sistēma.in);
Sistēma.ārā.print ("Ievadiet numuru:");
izmēģināt
// Paņemiet virknes datus no lietotāja
int skaitlis = iekšā.nextInt ();
// Izdrukājiet numuru
Sistēma.ārā.println ("Skaitļa vērtība =" + skaitlis);
catch (InputMismatchException e)
// Drukas kļūdas ziņojums
Sistēma.ārā.println ("Virknes vērtība netiek pieņemta.");
beidzot
// Aizveriet skenera objektu
iekšā.aizvērt ();
Sistēma.ārā.println ("Likvidēts no programmas");
Izeja:
Pēc koda izpildes 78 tiek norādīts kā ievades vērtība nākamajā izvadē. Tātad šeit netiek ģenerēts izņēmums. Ziņojums no pēdējā bloka tiek izdrukāts vēlāk.
Nākamais, Sveiki tiek ievadīts kā ievade pēc koda, kas ir virkne, izpildes. Tātad tiek ģenerēts izņēmums, un tiek izdrukāts kļūdas ziņojums no uztveršanas bloka. Ziņojums no pēdējā bloka tiek izdrukāts vēlāk.
Secinājums:
Izņēmumu apstrāde ir ļoti svarīga un noderīga jebkuras programmēšanas valodas funkcija, ko var izmantot, lai paslēptu patieso kļūdas ziņojumu no lietotāja un sniegtu cilvēkiem lasāmu kļūdas ziņojumu, lai lietotājs pareizi saprastu kļūdu. Šī apmācība palīdz lietotājam uzzināt dažādus veidus, kā Java izmantot izņēmumu apstrādi un padarīt viņu kodu piemērotāku.