Syntax:
Syntaxen för försök-fånga-äntligen blocket ges nedan.
Provauttalande 1 ... N
fångst (ExceptiontType var)
uttalande 1… N
till sist
uttalande 1 ... N
Här, om ett undantag inträffar inom försöksblocket, kommer undantaget att kastas till fångsten och det slutliga blocket är valfritt här. Koden för det slutliga blocket körs om ett undantag inträffar eller inte.
Exempel 1: Undantagshantering med ett enda fångstblock
Följande exempel visar användningen av undantagshantering med ett enda fångstblock. Ett filnamn tas som inmatning och skapar ett objekt av BufferedReader för att öppna en fil för läsning. Om filnamnet existerar läses innehållet i filen rad för rad och skrivs ut. Om filen inte finns genereras ett undantag och ett felmeddelande skrivs ut.
importera java.io.BufferedReader;importera java.io.FileReader;
importera java.io.IOException;
importera java.util.Scanner;
allmän klass utom1
public static void main (String [] args)
// Skapa ett skannerobjekt
Skanner in = ny skanner (System.i);
Systemet.ut.skriv ut ("Ange filnamn:");
// Ta strängdata från användaren
Strängfilnamn = in.Nästa();
Prova
// Skapa ett läsarobjekt
BufferedReader reader = new BufferedReader (new FileReader (FileName));
// Läs första raden om filen finns
Stränglinje = läsare.readLine ();
while (linje != null)
// Skriv ut raden
Systemet.ut.println (rad);
// Läs nästa rad
linje = läsare.readLine ();
// Stäng läsarobjektet
läsare.stänga();
// Stäng skannerobjektet
i.stänga();
fånga (IOException e)
// Skriv ut felmeddelandet
Systemet.ut.println ("Filen finns inte");
Produktion:
I följande utdata, 'Hej.Text' ges som det filnamn som inte existerar. Så följande meddelande skrivs ut.
Nästa gång, fil1.Text ges som filnamn som finns och utdata visar filens innehåll.
Exempel 2: Undantagshantering med flera fångstblock
Hur du kan använda flera fångstblock för att hantera flera undantag visas i följande exempel. Här deklareras tre fångstblock. Det första fångblocket kommer att fånga det aritmetiska felet när någon ologisk aritmetisk operation utförs. Den andra fångbocken kommer att fånga upp felområdet för matrisen när ett matrisindexvärde försöks att läsa som inte existerar. Det tredje fångstblocket kommer att fånga det numeriska värdefelet när något tecken eller strängvärde anges som ett matrisvärde. I koden deklareras en matris med fyra index och initialiseras med de helvärden som kommer att tas från användaren. Arrayvärdena skrivs ut med en slinga. En uppdelning utförs i slutet av försöksblocket.
importera java.util.Scanner;allmän klass utom2
public static void main (String [] args)
Prova
// Deklarera en numerisk matris
int num_arr [] = ny int [4];
// Skapa ett skannerobjekt
Skanner in = ny skanner (System.i);
Systemet.ut.println ("Ange fyra siffror:");
// Iterera slingan fyra gånger
för (int i = 0; i < 4; i++)
// Ingångsnummer
int n = in.nextInt ();
// Tilldela värde till array
num_arr [i] = n;
Systemet.ut.println ("Matrisvärden är:");
// Iterera slingan fem gånger
för (int i = 0; i < 4; i++)
// Skriv ut matrisvärdena
Systemet.ut.println (num_arr [i]);
// Dela och skriva ut värdet
int num = 50/0;
Systemet.ut.skriva ut (num);
// Stäng skannerobjektet
i.stänga();
fångst (ArithmeticException e)
Systemet.ut.println ("Inget nummer är delbart med 0");
fångst (ArrayIndexOutOfBoundsException e)
Systemet.ut.println ("Out of array index value occurred");
fångst (undantag e)
Systemet.ut.println ("Antalet värde anges inte");
Produktion:
Följande utdata visar att matrisvärden infogas och skrivs ut ordentligt, men det tredje fångblocket körs eftersom 50 divideras med 0, vilket är ett fel.
Programmet körs för andra gången. När ett strängvärde ges som ett matrisvärde genereras det andra undantaget och uttalandet för det andra fångstblocket körs.
Exempel 3: Undantagshantering med try-catch-slut-block
Användningen av slutligen block med try-catch block visas i följande exempel. Koden för slutligen block körs om ett undantag inträffar eller inte. I koden tas ett heltal från användaren. Om användaren anger något strängvärde, då InputMismatchException
kommer att generera och skriva ut meddelandet från fångstblocket. Skannerobjektet kommer att stängas i till sist blockera om undantaget genererar eller inte.
importera java.util.Scanner;importera java.util.InputMismatchException;
allmän klass utom3
public static void main (String [] args)
// Skapa ett skannerobjekt
Skanner in = ny skanner (System.i);
Systemet.ut.skriva ut ("Ange ett nummer:");
Prova
// Ta strängdata från användaren
int nummer = in.nextInt ();
// Skriv ut numret
Systemet.ut.println ("Värdet på tal =" + nummer);
fånga (InputMismatchException e)
// Skriv ut felmeddelande
Systemet.ut.println ("Strängvärde accepteras inte.");
till sist
// Stäng skannerobjektet
i.stänga();
Systemet.ut.println ("Avbruten från programmet");
Produktion:
78 ges som ingångsvärde i följande utgång efter att koden har exekverats. Så inget genereras här. Meddelandet från det slutliga blocket skrivs ut senare.
Nästa, Hej ges som inmatning efter körning av koden som är en sträng. Så genereras undantaget och felmeddelandet från fångblocket skrivs ut. Meddelandet från det slutliga blocket skrivs ut senare.
Slutsats:
Undantagshantering är en mycket viktig och användbar funktion i alla programmeringsspråk som kan användas för att dölja det verkliga felmeddelandet från användaren och tillhandahålla det läsbara felmeddelandet för användaren att förstå felet ordentligt. Denna handledning hjälper användaren att lära sig olika sätt att tillämpa undantagshantering i Java och göra deras kod mer lämplig.