Java unntakshåndtering

Java unntakshåndtering
Når den normale strømmen av programutførelsen avbryter for enhver feil, kalles det et unntak. Denne typen hendelser kan håndteres ved å bruke en prøvefangst-finalt blokkere. Et unntak er et objekt som brukes til å fange feilen og kjøre utsagnet basert på feiltilstanden som kalles unntakshåndtering. Hovedsakelig håndteres to typer feil. Disse er kompilert tid feil og Kjøretid feil. De Kjøretid Feil håndteres ved unntakshåndtering. Hvordan du kan håndtere unntak i Java blir forklart i denne opplæringen.

Syntaks:

Syntaksen til Try-Catch-Finalt Blokk er gitt nedenfor.

prøv
uttalelse 1… n

fangst (unntakseltype 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 endelig blokkeringen er valgfritt her. Koden til den endelig blokkeringen utføres om et unntak inntreffer eller ikke.

Eksempel-1: Unntakshåndtering med en enkelt fangstblokk

Følgende eksempel viser bruk av unntakshåndtering ved hjelp av en enkelt fangstblokk. Et filnavn vil bli tatt som input og opprette et objekt av BufferedReader for å åpne en fil for lesing. Hvis filnavnet eksisterer, vil innholdet i filen bli lest linje for linje og skrevet ut. Hvis filen ikke eksisterer, vil et unntak bli generert, og en feilmelding vil bli skrevet ut.

Importer Java.io.BufferedReader;
Importer Java.io.Filerader;
Importer Java.io.IOException;
Importer Java.util.Skanner;
offentlig klasse unntatt1
public static void main (String [] args)
// Opprett et skannerobjekt
Skanner i = ny skanner (system.i);
System.ute.print ("Skriv inn filnavnet:");
// ta strengdata fra brukeren
Strengfilnavn = i.neste ();
prøv
// Opprett et leserobjekt
BufferedReader Reader = new BufferedReader (New FileReader (filnavn));
// Les den første linjen hvis filen eksisterer
Strenglinje = leser.readline ();
mens (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 utgangen viser innholdet i filen.

Eksempel-2: Unntakhåndtering med flere fangstblokk

Hvordan du kan bruke flere fangstblokker for å håndtere flere unntak vises i følgende eksempel. Her er tre fangstblokker erklært. Den første fangstblokken vil fange den aritmetiske feilen når noen ulogisk aritmetisk operasjon er utført. Den andre fangstbokken vil fange opp rekkeviddefeilen til matrisen når en arrayindeksverdi vil bli prøvd å lese som ikke eksisterer. Den tredje fangstblokken vil fange den numeriske verdifeilen når en hvilken som helst karakter eller strengverdi er gitt som en matriseverdi. I koden blir en matrise med fire indekser erklært og initialisert med heltallverdiene som vil bli tatt fra brukeren. Array -verdiene skrives ut ved hjelp av en loop. En divisjonsoperasjon utføres på slutten av prøveblokken.

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

prøve

// erklære en numerisk matrise
int num_arr [] = ny int [4];
// Opprett et skannerobjekt
Skanner i = ny skanner (system.i);
System.ute.println ("Angi fire tall:");
// iterere sløyfen fire ganger
for (int i = 0; i < 4; i++)
// inngangsnummer
int n = i.nextInt ();
// Tilordne verdi til Array
num_arr [i] = n;

System.ute.println ("Array -verdier er:");
// itererer sløyfen fem ganger
for (int i = 0; i < 4; i++)
// Skriv ut arrayverdiene
System.ute.println (num_arr [i]);

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

fangst (aritmeticexception e)

System.ute.println ("Ingen tall er delbar med 0");

Fangst (ArrayIndexoutofBoundSexception E)

System.ute.Println ("Out of Array Index -verdien skjedde");

Fangst (unntak E)

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


Produksjon:

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

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

Eksempel-3: Unntakhåndtering med prøvefinansiering

Bruken av endelig blokkering med prøvefangerblokken vises i følgende eksempel. Koden til endelig blokkering utføres hvis et unntak skjer eller ikke. I koden vil en heltallverdi bli tatt fra brukeren. Hvis brukeren gir noen strengverdi, så InputMismatchException

vil generere og skrive ut meldingen fra fangstblokken. Skannerobjekt vil være lukket i endelig blokkerer hvis unntaket genererer eller ikke.

Importer Java.util.Skanner;
Importer Java.util.InputMismatchException;
offentlig klasse unntatt3
public static void main (String [] args)
// Opprett et skannerobjekt
Skanner i = ny skanner (system.i);
System.ute.print ("Skriv inn et tall:");
prøv
// ta strengdata fra brukeren
int nummer = i.nextInt ();
// Skriv ut nummeret
System.ute.println ("verdien av nummer =" + nummer);
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 utførelse av koden. Så intet unntak genereres her. Meldingen fra den endelig blokken skrives ut senere.

NESTE, Hallo gis som input etter å ha utført koden som er en streng. Så unntaket genereres, og feilmeldingen fra fangstblokken skrives ut. Meldingen fra den endelig blokken skrives ut senere.

Konklusjon:

Unntakshåndtering er et veldig viktig og nyttig trekk ved ethvert programmeringsspråk som kan brukes til å skjule den virkelige feilmeldingen fra brukeren og gi den menneskelig lesbare feilmeldingen for brukeren å forstå feilen riktig. Denne opplæringen hjelper brukeren å lære forskjellige måter å bruke unntakhåndtering i Java og gjøre koden deres mer passende.