Vyskúšajte program Catch in Java: Príklad spracovania výnimiek

Obsah:

Anonim

Čo je výnimka v prostredí Java?

Výnimkou v Jave je udalosť, ktorá preruší vykonávanie pokynov programu a naruší normálny priebeh vykonávania programu. Je to objekt, ktorý zabalí informácie o chybovej udalosti, ku ktorým došlo v rámci metódy, a ktoré sa odovzdajú runtime systému. V prostredí Java sa výnimky používajú hlavne na indikáciu rôznych typov chybových stavov.

V tomto návode sa naučíte

  • Čo je to výnimka?
  • Prečo potrebujeme výnimku?
  • Ako zvládnuť výnimku
  • Vyskúšajte Catch Block
  • Hierarchia tried Java Exception
  • Java konečne blokuje

Existujú dva typy chýb:

  1. Zostavte časové chyby
  2. Chyby za behu

Chyby kompilácie je možné opäť rozdeliť na dva typy:

  • Syntaxové chyby
  • Sémantické chyby

Príklad syntaxových chýb:

Namiesto vyhlásenia

int a;omylom ste to deklarovali ako in a;pre ktoreho kompilator vyhodi chybu.

Príklad: Deklarovali ste premennú

int a;a po niekoľkých riadkoch kódu znova vyhlásite celé číslo za int a;. Všetky tieto chyby sa zvýraznia pri kompilácii kódu.

Príklad chýb za behu

Chyba za behu sa nazýva chyba výnimiek . Je to každá udalosť, ktorá preruší normálny priebeh vykonávania programu.

Príkladom výnimiek sú aritmetická výnimka, výnimka Nullpointer, výnimka vydeľovaná nulou atď.

Výnimky v prostredí Java sú mimo kontroly vývojárov.

Ak video nie je prístupné, kliknite sem

Prečo potrebujeme výnimku?

Predpokladajme, že ste kódovali program na prístup na server. Počas vývoja kódu fungovali veci dobre.

Počas skutočnej produkčnej prevádzky je server nefunkčný. Keď sa váš program pokúsil o prístup, vyvolá sa výnimka.

Ako zvládnuť výnimku

Pokiaľ sme videli, výnimka je mimo kontroly vývojára. Obviňovanie zlyhania vášho kódu z environmentálnych problémov však nie je riešením. Potrebujete dôkladné programovanie, ktoré sa postará o výnimočné situácie. Takýto kód je známy ako Exception Handler.

V našom príklade by bolo dobrým riešením výnimiek, keď je server mimo prevádzky, pripojiť sa k záložnému serveru.

Ak to chcete implementovať, zadajte svoj kód na pripojenie k serveru (pomocou tradičných podmienok if a else).

Skontrolujete, či je server nefunkčný. Ak áno, napíšte kód na pripojenie k zálohovaciemu serveru.

Takéto usporiadanie kódu pomocou slučiek „if“ a „else“ nie je účinné, ak má váš kód spracovaných viacero výnimiek Java.

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

Vyskúšajte Catch Block

Java poskytuje zabudované výnimočné spracovanie.

  1. Normálny kód ide do bloku TRY .
  2. Kód na spracovanie výnimiek ide do bloku CATCH

V našom príklade bude blok TRY obsahovať kód na pripojenie k serveru. Blok CATCH bude obsahovať kód na pripojenie k záložnému serveru.

V prípade, že je server hore, bude kód v bloku CATCH ignorovaný. V prípade, že je server nefunkčný, vyvolá sa výnimka a vykoná sa kód v bloku catch.

Takto sa teda v Jave zaobchádza s výnimkou.

Syntax pre použitie funkcie try & catch

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

Príklad

Krok 1) Skopírujte nasledujúci kód do editora

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

Krok 2) Uložte súbor a skompilujte kód. Spustite program pomocou príkazu java JavaException

Krok 3) Aritmetická výnimka - delenie nulou je zobrazené nižšie pre riadok # 5 a riadok # 6 sa nikdy nevykoná

Krok 4) Teraz sa pozrime, ako nám pokus a chytenie pomôžu zvládnuť túto výnimku. Výnimku spôsobujúcu riadok kódu vložíme do bloku try , za ktorým nasleduje blok catch . Skopírujte nasledujúci kód do editora.

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");}}

Krok 5) Uložte, kompilujte a spustite kód. Získate nasledujúci výstup

Ako vidíte, výnimka sa spracuje a vykoná sa aj posledný riadok kódu. Upozorňujeme tiež, že riadok č. 7 sa nespustí, pretože akonáhle sa vyvolá výnimka, tok riadiacich skokov do bloku catch.

Poznámka: Objekt AritmeticException "e" obsahuje informácie o výnimke, ktorá sa vyskytla, ktoré môžu byť užitočné pri vykonávaní akcií obnovy.

Hierarchia tried Java Exception

Po vykonaní jedného príkazu catch sú ostatné obídené a vykonávanie pokračuje po bloku try / catch. Vnorené bloky úlovkov sa riadia hierarchiou výnimiek.
  • Všetky triedy výnimiek v Jave rozširujú triedu „Throwable“. Throwable má dve podtriedy, Error a Exception
  • Trieda Error definuje výnimku alebo problémy, pri ktorých náš program za normálnych okolností neočakáva výskyt, napríklad chyba pamäte, chyba hardvéru, chyba JVM atď.
  • Trieda Výnimka predstavuje výnimky, ktoré môže spracovať náš program, a náš program je možné z tejto výnimky obnoviť pomocou bloku try and catch
  • Výnimka za behu je podtriedou triedy výnimiek. Výnimka tohto typu predstavuje výnimku, ktorá sa vyskytuje v čase behu a ktorú nie je možné sledovať v čase kompilácie. Vynikajúcim príkladom toho je rozdelenie nulovou výnimkou alebo výnimkou s nulovým ukazovateľom atď
  • Počas vstupných a výstupných operácií sa generuje výnimka IO
  • Prerušené výnimky v Jave sa generujú počas viacerých vlákien.
Príklad: Pochopenie vnorenia blokov try and catch

Krok 1) Skopírujte nasledujúci kód do editora.

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");}}

Krok 2) Uložte súbor a skompilujte kód. Spustite program pomocou príkazu java JavaException .

Krok 3) Vygeneruje sa ArrayIndexOutOfBoundsException. Zmeňte hodnotu int d na 0. Uložte, kompilujte a spustite kód.

Krok 4 ) Musí sa vygenerovať aritmetická výnimka.

Krok 5) Odkomentujte riadok # 10 na riadok # 12. Uložte, kompilujte a spustite kód.

Krok 6) Chyba kompilácie? Je to tak preto, lebo Výnimka je základnou triedou výnimky ArithmeticException. Každú výnimku vyvolanú ArithmeticException zvládne aj trieda Exception. Blok úlovku ArithmeticException teda nikdy nebude mať šancu byť vykonaný, čo ho robí nadbytočným. Preto chyba kompilácie.

Java konečne blokuje

Konečný blok sa vykoná bez ohľadu na to, že sa v bloku try vyvolá výnimka . Používanie s blokom try je voliteľné .

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

V prípade, že sa v bloku try vyvolá výnimka, nakoniec sa blok vykoná po vykonaní bloku catch.

Príklad

Krok 1) Skopírujte nasledujúci kód do editora.

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");}}}

Krok 2) Uložte, kompilujte a spustite kód.

Krok 3) Očakávaný výstup. Nakoniec sa blok vykoná, aj keď sa vyvolá výnimka.

Krok 4) Zmeňte hodnotu premennej d = 1. Uložte, kompilujte a spustite kód a sledujte výstup. Spodná časť formulára

Zhrnutie :

  • Výnimka je chybe pri behu , ktoré preruší normálny tok programu execution.Disruption počas vykonávania programu sa označuje ako chyba alebo výnimku.
  • Chyby sú rozdelené do dvoch kategórií
    • Zostavte časové chyby - syntaktické chyby, sémantické chyby
    • Chyby za behu - Výnimka
  • Robustný program by mal spracovať všetky výnimky a pokračovať vo svojom normálnom prietoku vykonávanie programu. Java poskytuje vstavanú výnimočnú metódu spracovania
  • Obslužný program výnimiek je sada kódu, ktorý spracováva výnimky . Výnimky je možné vybaviť v prostredí Java pomocou funkcie try & catch.
  • Vyskúšajte blok : V tomto bloku sa použije normálny kód.
  • Blokovanie úlovkov : Ak je chyba v normálnom kóde, prejde do tohto bloku