Java

Java-undantagshantering

Java-undantagshantering
När det normala flödet av programkörningen avbryter för eventuella fel, kallas det ett undantag. Denna typ av händelse kan hanteras med hjälp av en try-catch-äntligen blockera. Ett undantag är ett objekt som används för att fånga upp felet och köra uttalandet baserat på det felvillkor som kallas undantagshantering. Huvudsakligen två typer av fel hanteras genom undantagshantering. Dessa är sammanställd tid fel och körning fel. De körning fel hanteras genom undantagshantering. Hur du kan hantera undantag i Java förklaras i denna handledning.

Syntax:

Syntaxen för försök-fånga-äntligen blocket ges nedan.

Prova
uttalande 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.

Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...
OpenTTD vs Simutrans
Att skapa din egen transportsimulering kan vara rolig, avkopplande och extremt lockande. Det är därför du måste se till att du testar så många spel so...