Java

Java erandite käitlemine

Java erandite käitlemine
Kui programmi täitmise tavapärane voog katkestab mis tahes vea, nimetatakse seda erandiks. Seda tüüpi sündmusi saab kasutada kasutades proovige lõpuks kinni püüda blokeerida. Erandiks on objekt, mida kasutatakse vea tabamiseks ja lause käitamiseks veatingimuse alusel, mida nimetatakse erandite käitlemiseks. Erandite käsitlemine käsitleb peamiselt kahte tüüpi vigu. Need on koostatud aeg vead ja jooksuaeg vigu. The jooksuaeg vigu käsitleb erandite käsitlemine. Selles juhendis on selgitatud, kuidas Java-s erandeid käsitseda.

Süntaks:

Süntaks proovige lõpuks kinni püüda plokk on toodud allpool.

proovige
avaldus 1… N

saak (ExceptiontType var)
avaldus 1… N

lõpuks
avaldus 1… N

Siin, kui prooviplokis esineb erand, visatakse erand püüdmisplokki ja viimane plokk on siin valikuline. Viimase ploki kood täidab erandi toimumist.

Näide 1: Erandkäsitlus ühe püüdmisplokiga

Järgmine näide näitab erandkäsitluse kasutamist ühe püüdmisploki abil. Faili avamiseks lugemiseks võetakse sisendiks failinimi, mis loob faili BufferedReader. Kui failinimi on olemas, loetakse faili sisu rida haaval ja prinditakse. Kui faili pole olemas, luuakse erand ja trükitakse veateade.

import java.io.Puhverdatud lugeja;
import java.io.FileReader;
import java.io.IOException;
import java.kasut.Skanner;
avalik klass välja arvatud1
public staatiline void main (String [] args)
// Skanneri objekti loomine
Skanner sisse = uus skanner (süsteem.sisse);
Süsteem.välja.print ("Sisestage failinimi:");
// Võta kasutajalt stringi andmed
Stringi failinimi = sees.järgmine ();
proovige
// Looge lugejaobjekt
BufferedReader reader = uus BufferedReader (uus FileReader (FileName));
// Kui fail on olemas, lugege esimest rida
Stringjoon = lugeja.readLine ();
samas (rida != null)
// Trüki rida
Süsteem.välja.println (rida);
// Loe järgmist rida
rida = lugeja.readLine ();

// Sule lugejaobjekt
lugeja.Sulge();
// Sulgege skanneri objekt
aastal.Sulge();
saak (IOException e)
// Prindige tõrketeade
Süsteem.välja.println ("Faili pole olemas");


Väljund:

Järgmises väljundis,  'Tere.txt ' on antud failinimena, mida pole olemas. Seega trükitakse järgmine teade.

Järgmine kord, fail1.txt on antud olemasoleva failinimena ja väljund näitab faili sisu.

Näide 2: Erandkäsitlus mitme püüdmisplokiga

Kuidas kasutada mitut püüdmisplokki mitme erandi käsitlemiseks, on näidatud järgmises näites. Siin deklareeritakse kolm püügiplokki. Esimene püüdmisplokk püüab aritmeetilise vea kätte siis, kui tehakse mõni ebaloogiline aritmeetiline toiming. Teine püüdmisbokk tabab massiivi vahemikust väljas oleva vea, kui proovitakse lugeda massiiviindeksi väärtust, mida pole olemas. Kolmas püüdeplokk tabab arvväärtuse vea, kui massiivi väärtusena antakse mõni märk või stringiväärtus. Koodis deklareeritakse nelja indeksiga massiiv ja lähtestatakse kasutajalt võetud täisarvu väärtustega. Massiiviväärtused trükitakse silmuse abil. Jagamisoperatsioon tehakse prooviploki lõpus.

import java.kasut.Skanner;
avalik klass v.a2
public staatiline void main (String [] argumendid)

proovige

// Deklareeri numbriline massiiv
int num_arr [] = uus int [4];
// Skanneri objekti loomine
Skanner sisse = uus skanner (süsteem.sisse);
Süsteem.välja.println ("Sisestage neli numbrit:");
// Kordage silmus neli korda
jaoks (int i = 0; i < 4; i++)
// Sisendi number
int n = sisse.järgmineInt ();
// Määra massiivi väärtus
num_arr [i] = n;

Süsteem.välja.println ("Massiivi väärtused on:");
// Kordage silmus viis korda
jaoks (int i = 0; i < 4; i++)
// Prindi massiivi väärtused
Süsteem.välja.println (num_arr [i]);

// Jagage ja printige väärtus
int arv = 50/0;
Süsteem.välja.print (arv);
// Sulgege skanneri objekt
aastal.Sulge();

saak (ArithmeticException e)

Süsteem.välja.println ("Ükski number ei ole 0-ga jagatav");

saak (ArrayIndexOutOfBoundsException e)

Süsteem.välja.println ("Massiivindeksi väärtus on väljas");

saak (erand e)

Süsteem.välja.println ("Numbriväärtust ei anta");


Väljund:

Järgmine väljund näitab, et massiivi väärtused on korralikult sisestatud ja prinditud, kuid kolmas püüdmisplokk täidetakse, kuna 50 jagatakse 0-ga, mis on viga.

Programmi käivitatakse teist korda. Kui massiivi väärtusena antakse stringi väärtus, genereeritakse teine ​​erand ja täidetakse teise püüdeploki lause.

Näide 3: Erandite käsitlemine koos proovimise ja püüdmise blokeerimisega

Lõpliku ploki kasutamist proovimisseadmega näidatakse järgmises näites. Lõpliku ploki kood käivitatakse erandi ilmnemisel või mitte. Koodis võetakse kasutajalt täisarv. Kui kasutaja annab stringi väärtuse, siis InputMismatchException

genereerib ja prindib teate püüdmisplokist. Skanneri objekt suletakse jaotises lõpuks blokeerida, kui erand genereerib või mitte.

import java.kasut.Skanner;
import java.kasut.InputMismatchException;
avalik klass v.a3
public staatiline void main (String [] args)
// Skanneri objekti loomine
Skanner sisse = uus skanner (süsteem.sisse);
Süsteem.välja.print ("Sisestage number:");
proovige
// Võta kasutajalt stringi andmed
int arv = sisse.järgmineInt ();
// Prindi number
Süsteem.välja.println ("Numbri väärtus =" + number);
saak (InputMismatchException e)
// Veateate printimine
Süsteem.välja.println ("Stringi väärtust ei aktsepteerita.");

lõpuks
// Sulgege skanneri objekt
aastal.Sulge();
Süsteem.välja.println ("Programmist lõpetatud");


Väljund:

78 antakse pärast koodi täitmist sisendväärtusena järgmises väljundis. Nii et siin ei teki erandit. Viimase ploki sõnum prinditakse hiljem.

Järgmine, Tere on sisestatud pärast stringi koodi täitmist. Niisiis luuakse erand ja trükitakse püüdeploki veateade. Viimase ploki sõnum prinditakse hiljem.

Järeldus:

Erandite käsitlemine on mis tahes programmeerimiskeele väga oluline ja kasulik omadus, mida saab kasutada tõelise veateate peitmiseks kasutaja eest ja inimesele loetava veateate edastamiseks, et kasutaja saaks veast õigesti aru. See õpetus aitab kasutajal õppida Java-s erandite käitlemise erinevaid viise ja muuta nende kood sobivamaks.

Parimad mängud, mida saab mängida käte jälgimisega
Oculus Quest tutvustas hiljuti suurepärast ideed käsitsi jälgimisest ilma kontrolleriteta. Üha suurema hulga mängude ja tegevustega, mis toetavad kas ...
Kuidas kuvada OSD ülekatet täisekraanil Linuxi rakendustes ja mängudes
Täisekraaniga mängude mängimine või rakenduste kasutamine häireteta täisekraanirežiimis võib teid paneelil või tegumiribal kuvatavast asjakohasest süs...
Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...