Syntaks:
Syntaksen for prøve-fangst-endelig blok er angivet nedenfor.
prøveerklæring 1… N
fangst (ExceptiontType var)
erklæring 1… N
langt om længe
erklæring 1… N
Her, hvis der forekommer en undtagelse inden for prøveblokken, kastes undtagelsen til fangstblokken, og den endelige blok er valgfri her. Koden for den endelige blok udfører, om der forekommer en undtagelse eller ej.
Eksempel 1: Undtagelseshåndtering med en enkelt fangstblok
Følgende eksempel viser brugen af undtagelseshåndtering ved hjælp af en enkelt fangstblok. Et filnavn tages som input og opretter et objekt af BufferedReader for at åbne en fil til læsning. Hvis filnavnet findes, læses indholdet af filen linje for linje og udskrives. Hvis filen ikke findes, genereres en undtagelse, og der udskrives en fejlmeddelelse.
importer java.io.BufferedReader;importer java.io.FileReader;
importer java.io.IOUndtagelse;
importer java.util.Scanner;
offentlig klasse undtagen1
offentlig statisk ugyldig hoved (String [] args)
// Opret et scannerobjekt
Scanner ind = ny scanner (system.i);
System.ud.print ("Indtast filnavnet:");
// Tag strengdata fra brugeren
String FileName = in.Næste();
prøve
// Opret et læserobjekt
BufferedReader reader = ny BufferedReader (ny FileReader (FileName));
// Læs den første linje, hvis filen findes
String line = læser.readLine ();
while (linje != null)
// Udskriv linjen
System.ud.println (linje);
// Læs den næste linje
linje = læser.readLine ();
// Luk læseren
læser.tæt();
// Luk scannerobjektet
i.tæt();
fangst (IOException e)
// Udskriv fejlmeddelelsen
System.ud.println ("Filen findes ikke");
Produktion:
I følgende output, 'Hej.txt ' angives som det filnavn, der ikke findes. Så følgende meddelelse udskrives.
Næste gang, fil1.txt gives som det filnavn, der findes, og output viser indholdet af filen.
Eksempel 2: Undtagelseshåndtering med flere fangstblokke
Hvordan du kan bruge flere fangstblokke til at håndtere flere undtagelser vises i det følgende eksempel. Her erklæres tre fangstblokke. Den første fangstblok fanger den aritmetiske fejl, når enhver ulogisk aritmetisk operation udføres. Den anden fangstbock fanger arrayets fejl uden for rækkevidde, når en array-indeksværdi vil blive forsøgt at læse, der ikke findes. Den tredje fangstblok fanger den numeriske værdifejl, når et hvilket som helst tegn eller en strengværdi er angivet som en matrixværdi. I koden erklæres en matrix med fire indekser og initialiseres med de heltalsværdier, der vil blive taget fra brugeren. Arrayværdierne udskrives ved hjælp af en løkke. En opdelingsoperation udføres i slutningen af prøveblokken.
importer java.util.Scanner;offentlig klasse undtagen2
offentlig statisk ugyldig hoved (String [] args)
prøve
// Erklær et numerisk array
int num_arr [] = ny int [4];
// Opret et scannerobjekt
Scanner ind = ny scanner (system.i);
System.ud.println ("Indtast fire tal:");
// Iterer sløjfen fire gange
for (int i = 0; i < 4; i++)
// Indgangsnummer
int n = in.nextInt ();
// Tildel værdi til array
num_arr [i] = n;
System.ud.println ("Matrixværdier er:");
// Iterer sløjfen fem gange
for (int i = 0; i < 4; i++)
// Udskriv matrixværdierne
System.ud.println (num_arr [i]);
// Opdel og udskriv værdien
int num = 50/0;
System.ud.print (num);
// Luk scannerobjektet
i.tæt();
fange (ArithmeticException e)
System.ud.println ("Intet tal kan deles med 0");
fangst (ArrayIndexOutOfBoundsException e)
System.ud.println ("Out of array index value occurred");
fangst (undtagelse e)
System.ud.println ("Talværdien angives ikke");
Produktion:
Følgende output viser, at matrixværdier indsættes og udskrives korrekt, men den tredje fangstblok udføres, fordi 50 divideres med 0, hvilket er en fejl.
Programmet udføres for anden gang. Når en strengværdi gives som en matrixværdi, genereres den anden undtagelse, og udsagnet om den anden fangstblok udføres.
Eksempel 3: Undtagelseshåndtering med prøve-fang-endelig blok
Brugen af endelig blokering med try-catch-blok er vist i det følgende eksempel. Koden for endelig blok udføres, hvis der forekommer en undtagelse eller ej. I koden tages et heltal fra brugeren. Hvis brugeren angiver en strengværdi, så InputMismatchException
genererer og udskriver beskeden fra fangstblokken. Scannerobjektet lukkes i langt om længe blokere, hvis undtagelsen genererer eller ej.
importer java.util.Scanner;importer java.util.InputMismatchException;
offentlig klasse undtagen3
offentlig statisk ugyldig hoved (String [] args)
// Opret et scannerobjekt
Scanner ind = ny scanner (system.i);
System.ud.print ("Indtast et nummer:");
prøve
// Tag strengdata fra brugeren
int antal = i.nextInt ();
// Udskriv nummeret
System.ud.println ("Værdien af nummer =" + nummer);
fangst (InputMismatchException e)
// Udskriv fejlmeddelelse
System.ud.println ("Strengværdi accepteres ikke.");
langt om længe
// Luk scannerobjektet
i.tæt();
System.ud.println ("Afsluttet fra programmet");
Produktion:
78 er angivet som inputværdi i det følgende output efter udførelse af koden. Så der genereres ingen undtagelse her. Meddelelsen fra den endelige blok udskrives senere.
Næste, Hej gives som input efter udførelse af den kode, der er en streng. Så genereres undtagelsen, og fejlmeddelelsen fra fangstblokken udskrives. Meddelelsen fra den endelige blok udskrives senere.
Konklusion:
Undtagelseshåndtering er en meget vigtig og nyttig funktion i ethvert programmeringssprog, der kan bruges til at skjule den virkelige fejlmeddelelse fra brugeren og give den menneskelæsbare fejlmeddelelse, så brugeren kan forstå fejlen korrekt. Denne tutorial hjælper brugeren med at lære forskellige måder at anvende undtagelseshåndtering på Java på og gøre deres kode mere passende.