Proovige Java-s Catchi: näide erandkäsitlusest

Lang L: none (table-of-contents):

Anonim

Mis on Java erand?

Java erand on sündmus, mis katkestab programmi käskude täitmise ja häirib programmi täitmise tavapärast voogu. See on objekt, mis ümbritseb vea sündmuse teavet, mis ilmnes meetodi sees, ja see edastatakse käitussüsteemile. Java-s kasutatakse erandeid peamiselt erinevat tüüpi veatingimuste näitamiseks.

Selles õpetuses saate teada

  • Mis on erand?
  • Miks me vajame erandit?
  • Kuidas erandit käsitleda
  • Proovige Catch Block
  • Java erandklassi hierarhia
  • Java lõpuks blokeeritakse

On kahte tüüpi vigu:

  1. Koosta ajavead
  2. Käitusaja vead

Kompileerimisaja vigu saab taas jagada kahte tüüpi:

  • Süntaksivead
  • Semantilised vead

Süntaksivigade näide:

Deklareerimise asemel

int a;deklareerisite seda ekslikult selle in a;kohta, milline kompilaator viskab vea.

Näide: olete deklareerinud muutuja

int a;ja pärast mõnda koodirida deklareerid jälle täisarvuks int a;. Kõik need vead on koodi koostamisel esile tõstetud.

Käitusaja vigade näide

Käitusaja tõrke nimetatakse veaks Erandid . See on iga sündmus, mis katkestab programmi täitmise tavapärase voo.

Erandite näiteks on aritmeetiline erand, Nullpointeri erand, Jaga nulliga erand jne.

Java erandid on arendajate kontrolli alt väljas.

Kui videole pole juurdepääsu, klõpsake siin

Miks me vajame erandit?

Oletame, et olete serverile juurdepääsemiseks kodeerinud programmi. Asjad töötasid koodi väljatöötamise ajal hästi.

Tegeliku tootmise ajal on server maas. Kui teie programm proovis sellele juurde pääseda, tekib erand.

Kuidas erandit käsitleda

Siiani oleme näinud, et erand on arendaja kontrolli alt väljas. Kuid oma koodirikke süüdistamine keskkonnaprobleemides pole lahendus. Teil on vaja tugevat programmeerimist, mis hoolitseb erakorraliste olukordade eest. Sellist koodi tuntakse kui erandkäsitlejat.

Meie näites oleks hea erandite käsitlemine, kui server on maas, ühendada varundusserver.

Selle rakendamiseks sisestage serveriga ühenduse loomiseks oma kood (kasutades tavapäraseid tingimusi if ja muu).

Te kontrollite, kas server ei tööta. Kui jah, kirjutage varundusserveriga ühenduse loomiseks kood.

Selline koodi korraldamine, kasutades silmus "if" ja "else", ei ole efektiivne, kui teie koodil on mitu Java-erandit.

class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}

Proovige Catch Block

Java pakub sisseehitatud erakordset käsitsemist.

  1. Tavaline kood läheb TRY- plokki.
  2. Erandite käitlemise kood läheb plokki CATCH

Meie näites sisaldab TRY-plokk serveriga ühenduse loomiseks vajalikku koodi. CATCH-plokk sisaldab varundusserveriga ühenduse loomiseks vajalikku koodi.

Kui server on üleval, ignoreeritakse blokis CATCH olevat koodi. Kui server on maas, tõstetakse erand ja käivitatakse püüdmisplokis olev kood.

Niisiis käsitletakse Java-s erandit.

Süntaks proovimise ja püüdmise kasutamiseks

try{statement(s)}catch (exceptiontype name){statement(s)}

Näide

Samm 1) Kopeerige järgmine kood redaktorisse

class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}

Samm 2) Salvestage fail ja kompileerige kood. Käivitage programm käsuga Java JavaException

Samm 3) Aritmeetiline erand - jagage nulliga, nagu on näidatud allpool rida nr 5 ja rida nr 6 ei täideta kunagi

4. samm. Vaatame nüüd, kuidas proovimine ja püüdmine aitab meil selle erandiga toime tulla. Paneme välja arvatud põhjustab koodirida viiakse proovida blokeerida, millele järgneb saagi plokk. Kopeerige redaktorisse järgmine kood.

class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}

Samm 5) Salvestage, kompileerige ja käivitage kood. Saate järgmise väljundi

Nagu te märkate, käsitletakse erandit ja täidetakse ka viimane koodirida. Pange tähele ka seda, et rida nr 7 ei täideta, kuna niipea, kui erand on tõstetud, hüppab juhtimisvoog lukustusplokki.

Märkus: objekt AritmeticException "e" kannab teavet ilmnenud erandi kohta, mis võib olla kasulik taastetoimingute tegemisel.

Java erandklassi hierarhia

Pärast ühe püügilause täitmist minnakse teistest mööda ja käivitamine jätkub pärast try / catch plokki. Pesastatud püüdmisplokid järgivad erandite hierarhiat.
  • Kõik Java erandklassid laiendavad klassi 'viskavad'. Throwable'il on kaks alaklassi, Error ja Exception
  • Klass Viga määratleb erandi või probleemid, mida meie programm tavapärastes tingimustes eeldatavasti ei esine, näiteks mäluviga, riistvaraviga, JVM-i viga jne.
  • Klass Erand tähistab erandeid, mida meie programm saab käsitseda, ja meie programmi saab sellest erandist taastada, kasutades proovimis- ja püüdmisplokki
  • Käitusaja erand on erandklassi alamklass. Seda tüüpi erand tähistab erandit, mis ilmneb käitamise ajal ja mida ei saa kompileerimise ajal jälgida. Selle suurepäraseks näiteks on jagamine nullierandiga või nullkursorierand jne
  • IO erand genereeritakse sisend- ja väljundoperatsioonide käigus
  • Katkestatud erandid Java-s tekitatakse mitme keermestamise ajal.
Näide: proovige proovida plokkide pesitsemist

Samm 1) Kopeerige järgmine kood redaktorisse.

class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}

Samm 2) Salvestage fail ja kompileerige kood. Käivitage programm käsuga Java JavaException .

Samm 3) Luuakse ArrayIndexOutOfBoundsException. Muutke int d väärtuseks 0. Koodi salvestamine, kompileerimine ja käivitamine.

4. samm . Tuleb luua aritmeetiline erand.

Samm 5) Kommenteerige rida nr 10 kuni rida 12. Koodi salvestamine, kompileerimine ja käivitamine.

6. samm) kompileerimisviga? Seda seetõttu, et Erand on ArithmeticException Exceptioni põhiklass. Mis tahes ArithmeticExceptioni tõstatatud erandiga saab hakkama ka Exceptioni klass. Nii et ArithmeticExceptioni püüdeplokk ei saa kunagi võimalust käivitada, mis muudab selle üleliigseks. Siit ka kompileerimisviga.

Java lõpuks blokeeritakse

Viimane plokk täidetakse sõltumata prooviplokis tõstatatud erandist . See on vabatahtlik kasutada koos prooviplokiga.

 try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}

Juhul, kui prooviplokis tõstatatakse erand, viiakse blokk lõpule pärast püüdmisploki täitmist.

Näide

Samm 1) Kopeerige järgmine kood redaktorisse.

class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}

Samm 2) Salvestage, kompileerige ja käivitage kood.

Samm 3) Eeldatav väljund. Lõpuks käivitatakse plokk, isegi kui on tehtud erand.

Samm 4) Muutke muutuja d = 1. Väärtuse salvestamine, kompileerimine ja käivitamine ning väljundi jälgimine. Vormi alaosa

Kokkuvõte :

  • Erand on käitusajatõrge mis katkestab normaalset voolu programmi execution.Disruption täitmise ajal programmi nimetatakse nagu viga või erand.
  • Vead liigitatakse kahte kategooriasse
    • Kompileerimisvead - süntaksivead, semantilised vead
    • Käitusaja vead - erand
  • Jõuline programm peaks hakkama kõik erandid ja jätkata oma normaalset voolu programmi täitmine. Java pakub sisseehitatud erakordset käsitsemismeetodit
  • Erandite haldur on koodide komplekt, mis tegeleb erandiga . Erandeid saab Java-s lahendada try & catch abil.
  • Proovige plokki : sellele plokile läheb tavaline kood.
  • Püügiplokk : kui tavalises koodis on viga, läheb see sellesse plokki