Java

Java unntakshåndtering

Java unntakshåndtering
Når den normale strømmen av programutførelsen avbryter for eventuelle feil, kalles det et unntak. Denne typen hendelser kan håndteres ved hjelp av en try-catch-endelig blokkere. Et unntak er et objekt som brukes til å fange feilen og kjøre setningen basert på feiltilstanden som kalles unntaksbehandling. Hovedsakelig to typer feil håndteres av unntakshåndtering. Disse er samlet tid feil og kjøretid feil. De kjøretid feil håndteres av unntakshåndtering. Hvordan du kan håndtere unntak i Java er forklart i denne veiledningen.

Syntaks:

Syntaksen til prøvefangst-endelig blokken er gitt nedenfor.

prøv
uttalelse 1… N

fangst (ExceptiontType var)
uttalelse 1… N

endelig
uttalelse 1… N

Her, hvis et unntak oppstår i prøveblokken, vil unntaket bli kastet til fangstblokken, og den endelige blokken er valgfri her. Koden til den endelige blokken utfører om det oppstår et unntak eller ikke.

Eksempel 1: Unntakshåndtering med en enkelt fangstblokk

Følgende eksempel viser bruken av unntakshåndtering ved hjelp av en enkelt fangstblokk. Et filnavn blir tatt som input og opprettet et objekt av BufferedReader for å åpne en fil for lesing. Hvis filnavnet eksisterer, vil innholdet i filen leses linje for linje og skrives ut. Hvis filen ikke eksisterer, genereres et unntak, og en feilmelding skrives ut.

importere java.io.BufferedReader;
importere java.io.FileReader;
importere java.io.IO Unntak;
importere java.util.Skanner;
offentlig klasse unntatt1
public static void main (String [] args)
// Opprett et skannerobjekt
Skanner inn = ny skanner (System.i);
System.ute.skriv ut ("Skriv inn filnavnet:");
// Ta strengdata fra brukeren
String FileName = in.neste ();
prøv
// Lag et leserobjekt
BufferedReader reader = new BufferedReader (new FileReader (FileName));
// Les første linje hvis filen eksisterer
Strenglinje = leser.readLine ();
while (linje != null)
// Skriv ut linjen
System.ute.println (linje);
// Les neste linje
linje = leser.readLine ();

// Lukk leserobjektet
leser.Lukk();
// Lukk skannerobjektet
i.Lukk();
fangst (IOException e)
// Skriv ut feilmeldingen
System.ute.println ("Filen eksisterer ikke");


Produksjon:

I følgende utgang,  'Hallo.tekst' er gitt som filnavnet som ikke eksisterer. Så følgende melding skrives ut.

Neste gang, fil1.tekst er gitt som filnavn som eksisterer, og utdataene viser innholdet i filen.

Eksempel 2: Unntakshåndtering med flere fangstblokker

Hvordan du kan bruke flere fangstblokker for å håndtere flere unntak, vises i eksemplet nedenfor. Her er tre fangstblokker erklært. Den første fangstblokken vil fange den aritmetiske feilen når en ulogisk aritmetisk operasjon er utført. Den andre fangstbocken vil fange feilen utenfor rekkevidden i matrisen når en arrayindeksverdi vil bli prøvd å lese som ikke eksisterer. Den tredje fangstblokken fanger den numeriske verdifeilen når et tegn eller en strengverdi er gitt som en matriseverdi. I koden blir en matrise med fire indekser deklarert og initialisert med heltallverdiene som vil bli hentet fra brukeren. Arrayverdiene skrives ut med en sløyfe. En divisjonsoperasjon gjøres på slutten av prøveblokken.

importere java.util.Skanner;
offentlig klasse unntatt2
public static void main (String [] args)

prøve

// Deklarer en numerisk matrise
int num_arr [] = ny int [4];
// Opprett et skannerobjekt
Skanner inn = ny skanner (System.i);
System.ute.println ("Skriv inn fire tall:");
// Iterer løkken fire ganger
for (int i = 0; i < 4; i++)
// Inngangsnummer
int n = in.nextInt ();
// Tilordne verdi til matrisen
num_arr [i] = n;

System.ute.println ("Array-verdier er:");
// Iterer løkken fem ganger
for (int i = 0; i < 4; i++)
// Skriv ut matrixverdiene
System.ute.println (num_arr [i]);

// Del og skriv ut verdien
int num = 50/0;
System.ute.trykk (num);
// Lukk skannerobjektet
i.Lukk();

fangst (ArithmeticException e)

System.ute.println ("Ingen tall kan deles med 0");

fangst (ArrayIndexOutOfBoundsException e)

System.ute.println ("Out of array index value occurred");

fangst (unntak e)

System.ute.println ("Antallverdien er ikke gitt");


Produksjon:

Følgende utgang viser at matrixverdier settes inn og skrives ut riktig, men den tredje fangstblokken utføres fordi 50 er delt med 0, noe som er en feil.

Programmet kjøres for andre gang. Når en strengverdi er gitt som en matriseverdi, genereres det andre unntaket, og uttalelsen til den andre fangstblokken utføres.

Eksempel 3: Unntakshåndtering med try-catch-finally-blokk

Bruken av endelig blokk med prøvefangstblokken er vist i følgende eksempel. Koden for endelig blokk utføres hvis et unntak oppstår eller ikke. I koden vil et heltall bli tatt fra brukeren. Hvis brukeren gir noen strengverdi, da InputMismatchException

vil generere og skrive ut meldingen fra fangstblokken. Skannerobjektet lukkes i endelig blokker hvis unntaket genererer eller ikke.

importere java.util.Skanner;
importere java.util.InputMismatchException;
offentlig klasse unntatt3
public static void main (String [] args)
// Opprett et skannerobjekt
Skanner inn = ny skanner (System.i);
System.ute.skriv ut ("Skriv inn et tall:");
prøv
// Ta strengdata fra brukeren
int tall = in.nextInt ();
// Skriv ut nummeret
System.ute.println ("Verdien av tall =" + tall);
fangst (InputMismatchException e)
// Skriv ut feilmelding
System.ute.println ("Strengverdi aksepteres ikke.");

endelig
// Lukk skannerobjektet
i.Lukk();
System.ute.println ("Avsluttet fra programmet");


Produksjon:

78 er gitt som inngangsverdi i følgende utgang etter å ha utført koden. Så, det genereres ikke noe unntak her. Meldingen fra den endelige blokken skrives ut senere.

Neste, Hallo er gitt som inndata etter å ha utført koden som er en streng. Så genereres unntaket, og feilmeldingen fra fangstblokken skrives ut. Meldingen fra den endelige blokken skrives ut senere.

Konklusjon:

Unntakshåndtering er en veldig viktig og nyttig funksjon i ethvert programmeringsspråk som kan brukes til å skjule den virkelige feilmeldingen fra brukeren og gi den menneskelesbare feilmeldingen for at brukeren skal forstå feilen riktig. Denne opplæringen hjelper brukeren til å lære forskjellige måter å bruke unntakshåndtering på Java og gjøre koden deres mer passende.

Hvordan bruke AutoKey til å automatisere Linux-spill
AutoKey er et desktopautomatiseringsverktøy for Linux og X11, programmert i Python 3, GTK og Qt. Ved å bruke skript og MACRO-funksjonalitet kan du aut...
Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...
Hvordan laste ned og spille Sid Meier's Civilization VI på Linux
Introduksjon til spillet Civilization 6 er et moderne syn på det klassiske konseptet som ble introdusert i serien av Age of Empires-spillene. Ideen va...