Syntaxis:
De syntaxis van de try-catch-eindelijk blok wordt hieronder gegeven:.
proberenstelling 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.