Java

Afhandeling van Java-uitzonderingen

Afhandeling van Java-uitzonderingen
Wanneer de normale stroom van de uitvoering van het programma wordt onderbroken voor een fout, wordt dit een uitzondering genoemd. Dit type gebeurtenis kan worden afgehandeld met behulp van een try-catch-eindelijk blok. Een uitzondering is een object dat wordt gebruikt om de fout op te vangen en de instructie uit te voeren op basis van de foutconditie die exception handling wordt genoemd. Er worden hoofdzakelijk twee soorten fouten afgehandeld door de afhandeling van uitzonderingen. Dit zijn gecompileerde tijd fouten en looptijd fouten. De looptijd fouten worden afgehandeld door exception handling. Hoe u omgaat met uitzonderingen in Java wordt uitgelegd in deze tutorial.

Syntaxis:

De syntaxis van de try-catch-eindelijk blok wordt hieronder gegeven:.

proberen
stelling 1… Nee

catch (ExceptiontType var)
stelling 1… Nee

Tenslotte
stelling 1… Nee

Hier, als er een uitzondering optreedt binnen het try-blok, wordt de uitzondering naar het catch-blok gegooid en is het definitieve blok hier optioneel. De code van het laatste blok wordt uitgevoerd, of er nu een uitzondering optreedt of niet.

Voorbeeld-1: Afhandeling van uitzonderingen met een enkel catch-blok

Het volgende voorbeeld toont het gebruik van exception handling met een enkel catch-blok. Een bestandsnaam zal als invoer worden genomen en een object van BufferedReader maken om een ​​bestand te openen om te lezen. Als de bestandsnaam bestaat, wordt de inhoud van het bestand regel voor regel gelezen en afgedrukt. Als het bestand niet bestaat, wordt een uitzondering gegenereerd en wordt een foutbericht afgedrukt.

java importeren.io.Gebufferde Reader;
java importeren.io.Bestandslezer;
java importeren.io.IOUitzondering;
java importeren.gebruik.Scanner;
openbare klas behalve1
public static void main(String[] args)
// Maak een Scanner-object
Scanner in = nieuwe scanner (Systeem.in);
Systeem.uit.print("Vul de bestandsnaam in: ");
// Neem string-gegevens van de gebruiker
String bestandsnaam = in.De volgende();
proberen
//Maak een lezerobject
BufferedReader-lezer = nieuwe BufferedReader (nieuwe FileReader (FileName));
//Lees de eerste regel als het bestand bestaat
Stringregel = lezer.Lees regel();
terwijl (regel != nul)
// Druk de regel af
Systeem.uit.println(regel);
//Lees de volgende regel
regel = lezer.Lees regel();

//Sluit het lezerobject
lezer.dichtbij();
//Sluit het scannerobject
in.dichtbij();
catch (IOException e)
// Druk de foutmelding af
Systeem.uit.println("Bestand bestaat niet");


Uitgang:

In de volgende uitvoer:,  'Hallo.tekst' wordt gegeven als de bestandsnaam die niet bestaat. Dus het volgende bericht wordt afgedrukt:.

De volgende keer, bestand1.tekst wordt gegeven als bestandsnaam die bestaat, en de uitvoer toont de inhoud van het bestand.

Voorbeeld-2: Afhandeling van uitzonderingen met meerdere catch-blokken

Hoe u meerdere catch-blokken kunt gebruiken om meerdere uitzonderingen af ​​te handelen, wordt in het volgende voorbeeld getoond:. Hier worden drie vangstblokken gedeclareerd. Het eerste catch-blok vangt de rekenfout op wanneer een onlogische rekenkundige bewerking wordt uitgevoerd. De tweede catch-bock vangt de buiten bereikfout van de array op wanneer een array-indexwaarde wordt geprobeerd te lezen die niet bestaat. Het derde catch-blok vangt de numerieke waardefout op wanneer een teken- of tekenreekswaarde wordt gegeven als een matrixwaarde. In de code wordt een array met vier indexen gedeclareerd en geïnitialiseerd met de gehele waarden die van de gebruiker zullen worden overgenomen. De matrixwaarden worden afgedrukt met een lus. Aan het einde van het try-blok wordt een delingsbewerking uitgevoerd.

java importeren.gebruik.Scanner;
openbare les behalve2
public static void main(String[] args)

proberen

// Declareer een numerieke array
int num_arr[] = nieuwe int[4];
//Maak een scannerobject
Scanner in = nieuwe scanner (Systeem.in);
Systeem.uit.println("Voer vier cijfers in:");
// Herhaal de lus vier keer
voor (int i = 0; i < 4; i++)
// Voer nummer in
int n = in.volgendeInt();
// Waarde toewijzen aan array
aantal_arr[i] = n;

Systeem.uit.println("Array-waarden zijn:");
// Herhaal de lus vijf keer
voor (int i = 0; i < 4; i++)
//Druk de matrixwaarden af
Systeem.uit.println(aantal_arr[i]);

// Verdeel en print de waarde
int num = 50/0;
Systeem.uit.print(aantal);
//Sluit het scannerobject
in.dichtbij();

vangst (Rekenkundige Uitzondering e)

Systeem.uit.println("Geen getal is deelbaar door 0");

catch (ArrayIndexOutOfBoundsException e)

Systeem.uit.println ("Out of array indexwaarde opgetreden");

vangst (uitzondering e)

Systeem.uit.println("Getalwaarde is niet gegeven");


Uitgang:

De volgende uitvoer laat zien dat arraywaarden correct zijn ingevoegd en afgedrukt, maar het derde catch-blok wordt uitgevoerd omdat 50 is gedeeld door 0, wat een fout is.

Het programma wordt voor de tweede keer uitgevoerd. Wanneer een stringwaarde wordt gegeven als een arraywaarde, wordt de tweede uitzondering gegenereerd en wordt de instructie van het tweede catch-blok uitgevoerd.

Voorbeeld-3: Afhandeling van uitzonderingen met try-catch-finally block

Het gebruik van definitief blok met het try-catch-blok wordt getoond in het volgende voorbeeld:. De code van eindelijk blok wordt uitgevoerd als er een uitzondering optreedt of niet. In de code wordt een geheel getal genomen van de gebruiker. Als de gebruiker een tekenreekswaarde geeft, dan: InputMismatchUitzondering

zal het bericht van het catch-blok genereren en afdrukken. Scannerobject wordt gesloten in de Tenslotte blokkeren als de uitzondering genereert of niet.

java importeren.gebruik.Scanner;
java importeren.gebruik.InputMismatchUitzondering;
openbare les behalve3
public static void main(String[] args)
//Maak een scannerobject
Scanner in = nieuwe scanner (Systeem.in);
Systeem.uit.print("Vul een getal in: ");
proberen
//Neem stringgegevens van de gebruiker
int getal = in.volgendeInt();
// Druk het nummer af
Systeem.uit.println("De waarde van getal = " + getal);
catch(InputMismatchException e)
// Foutbericht afdrukken
Systeem.uit.println("Tekenreekswaarde wordt niet geaccepteerd.");

Tenslotte
//Sluit het scannerobject
in.dichtbij();
Systeem.uit.println("Beëindigd uit het programma");


Uitgang:

78 wordt gegeven als invoerwaarde in de volgende uitvoer na het uitvoeren van de code:. Er wordt hier dus geen uitzondering gegenereerd. Het bericht van het definitief blok wordt later afgedrukt.

De volgende, Hallo wordt gegeven als invoer na het uitvoeren van de code die een string is. Dus de uitzondering wordt gegenereerd en de foutmelding van het catch-blok wordt afgedrukt. Het bericht van het definitieve blok wordt later afgedrukt.

Conclusie:

Afhandeling van uitzonderingen is een zeer belangrijke en nuttige functie van elke programmeertaal die kan worden gebruikt om de echte foutmelding voor de gebruiker te verbergen en de gebruiker een door mensen leesbare foutmelding te geven om de fout goed te begrijpen. Deze zelfstudie helpt de gebruiker om verschillende manieren te leren om uitzonderingen in Java toe te passen en om hun code geschikter te maken.

Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...
Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...