Mi a kivétel a Java-ban?
A Java kivétel egy olyan esemény, amely megszakítja a program utasításainak végrehajtását és megzavarja a program futtatásának normál folyamatát. Ez egy olyan objektum, amely a metódusban bekövetkezett hibaeseményeket becsomagolja, és továbbítja azokat a futásidejű rendszernek. A Java-ban a kivételeket elsősorban a különböző típusú hibaállapotok jelzésére használják.
Ebben az oktatóanyagban megtanulja-
- Mi az a kivétel?
- Miért van szükségünk Kivételre?
- Hogyan kezeljük a kivételeket
- Próbálja ki a Catch Block-ot
- Java Exception osztály Hierarchia
- A Java végül blokkolja
Kétféle hiba létezik:
- Időbeli hibák összeállítása
- Futásidejű hibák
Az fordítási időbeli hibák ismét két típusba sorolhatók:
- Szintaxis hibák
- Szemantikai hibák
Példa szintaktikai hibákra:
Nyilatkozat helyett
int a;
tévesen kijelentette, in a;
hogy melyik fordító dob hibát.
Példa: Deklarált egy változót
int a;
és néhány kódsor után ismét egy egész számot deklarálsz int a;
. Mindezek a hibák kiemelésre kerülnek a kód fordításakor.
Futásidejű hibák példa
A futásidejű hibát Exceptions hibának nevezzük . Bármely esemény megszakítja a program futtatásának normál folyamatát.
Példák a kivételekre, számtani kivétel, Nullpointer kivétel, Osztás nullával kivétel stb.
A Java kivételei olyan dolgok, amelyeket a fejlesztők nem tudnak ellenőrizni.
Kattintson ide, ha a videó nem érhető el
Miért van szükségünk Kivételre?
Tegyük fel, hogy programot kódolt a szerver eléréséhez. A dolgok jól működtek, amíg fejlesztetted a kódot.
A tényleges gyártási futtatás során a szerver nem működik. Amikor a program megpróbálta elérni, kivételt jelent.
Hogyan kezeljük a kivételeket
Eddig láthattuk, hogy a kivétel a fejlesztő ellenőrzésén kívül esik. De a kódhiba környezetvédelmi kérdésekben való felróása nem megoldás. Szüksége van egy robusztus programozásra, amely gondoskodik a kivételes helyzetekről. Ez a kód Exception Handler néven ismert .
Példánkban a kivétel kivételes kezelése az lenne, ha a kiszolgáló nem működik, csatlakozzon a biztonsági mentési szerverhez.
Ennek megvalósításához írja be a kódot, hogy csatlakozzon a szerverhez (a hagyományos if and else feltételek használatával).
Ellenőrizni fogja, hogy a szerver nem működik-e. Ha igen, írja be a kódot, hogy csatlakozzon a biztonsági mentési kiszolgálóhoz.
A kód ilyen szervezése, az "if" és "else" ciklusok használata nem hatékony, ha a kódnak több java kivételt is kezel.
class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}
Próbálja ki a Catch Block-ot
A Java beépített kivételes kezelhetőséget biztosít.
- A normál kód egy TRY blokkba kerül.
- A kivételkezelő kód a CATCH blokkba kerül
Példánkban a TRY blokk tartalmazza a szerverhez való csatlakozáshoz szükséges kódot. A CATCH blokk tartalmazza a biztonsági mentési kiszolgálóhoz való csatlakozáshoz szükséges kódot.
Abban az esetben, ha a szerver fent van, a CATCH blokk kódját figyelmen kívül hagyják. Abban az esetben, ha a szerver nem működik, kivételt vetnek fel, és a fogási blokkban lévő kód végrehajtásra kerül.
Tehát a Java így kezeli a kivételt.
Szintaxis a try & catch használatához
try{statement(s)}catch (exceptiontype name){statement(s)}
Példa
1. lépés: Másolja a következő kódot egy szerkesztőbe
class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}
2. lépés: Mentse a fájlt és fordítsa le a kódot. Futtassa a programot a java JavaException paranccsal
3. lépés: Aritmetikai kivétel - a nullával osztás az alábbiakban látható az 5. sorhoz, és a 6. sort soha nem hajtják végre
4. lépés) Most nézzük meg, hogy a próbálkozás és fogás hogyan segít kezelni ezt a kivételt. A kódsort okozó kivételt egy try blokkba helyezzük , majd egy catch blokkot. Másolja a következő kódot a szerkesztőbe.
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");}}
5. lépés: Mentse, fordítsa le és futtassa a kódot. A következő kimenetet kapja
Amint észrevette, a kivétel kezelése megtörténik, és az utolsó kódsor is végrehajtásra kerül. Vegye figyelembe azt is, hogy a 7. sor nem kerül végrehajtásra, mert amint egy kivétel felmerül, a vezérlés folyamata a fogási blokkra ugrik.
Megjegyzés: Az "e" AritmeticException objektum információkat tartalmaz a bekövetkezett kivételről, amely hasznos lehet a helyreállítási műveletek végrehajtásához.
Java Exception osztály Hierarchia
Miután az egyik fogási utasítás végrehajtásra kerül, a többit megkerülik, és a végrehajtás a try / catch blokk után folytatódik. A beágyazott fogási blokkok a kivétel hierarchiáját követik.- A Java összes kivételosztálya kiterjeszti a 'Throwable' osztályt. A Throwable-nak két alosztálya van, a Error és a Exception
- A Error osztály meghatározza a kivételeket vagy azokat a problémákat, amelyek a program által normális körülmények között várhatóan nem fordulnak elő, például Memória hiba, Hardver hiba, JVM hiba stb.
- A Kivétel osztály képviseli azokat a kivételeket, amelyeket a programunk kezelhet, és a programunk ebből a kivételből helyreállítható a try and catch blokk segítségével
- A futásidejű kivétel a kivétel osztály egyik alosztálya. Az ilyen típusú kivétel kivételt jelent, amely a futási időben fordul elő, és amelyet nem lehet követni a fordítás idején. Kiváló példa erre az osztás nulla kivétellel vagy null mutató kivétel stb
- Az IO kivétel a bemeneti és kimeneti műveletek során keletkezik
- Megszakított kivételek a Java-ban, több szálas menet közben keletkeznek.
1. lépés: Másolja a következő kódot egy szerkesztőbe.
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");}}
2. lépés: Mentse a fájlt és fordítsa le a kódot. Futtassa a programot a java JavaException paranccsal .
3. lépés: Egy ArrayIndexOutOfBoundsException jön létre. Változtassa az int d értékét 0-ra. Mentse, fordítsa le és futtassa a kódot.
4. lépés: ArithmeticExceptiont kell létrehozni.
5. lépés: Kommentelje a 10. sort a 12. sorig. Mentse, fordítsa le és futtassa a kódot.
6. lépés) Összeállítási hiba? Ennek oka, hogy a Kivétel az ArithmeticException Exception alaposztálya. Az ArithmeticException által felvetett kivételeket az Exception osztály is kezelheti. Tehát az ArithmeticException fogási blokkja soha nem kap esélyt a végrehajtásra, ami feleslegessé teszi. Ezért a fordítási hiba.
A Java végül blokkolja
Az utolsó blokkot végrehajtják, függetlenül a try blokkban felvetett kivételtől . Opcionális egy próbablokkal együtt használni.
try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}
Abban az esetben, ha egy kivétel felmerül a try blokkban, végül a blokk végrehajtásra kerül a catch blokk végrehajtása után.
Példa
1. lépés: Másolja a következő kódot egy szerkesztőbe.
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");}}}
2. lépés: Mentse, fordítsa le és futtassa a kódot.
3. lépés) Várható kimenet. Végül a blokk végrehajtásra kerül, annak ellenére, hogy kivételt vetnek fel.
4. lépés: Módosítsa a d = 1 változó értékét. Mentse el, fordítsa le és futtassa a kódot, és figyelje meg a kimenetet. Az űrlap alja
Összegzés :
- A kivétel egy futásidejű hiba, amely megszakítja a program futtatásának normál folyamatát. A program futtatása közbeni megszakítást hibának vagy kivételnek nevezzük.
- A hibákat két kategóriába sorolják
- Fordítási idő hibák - Szintaxis hibák, szemantikai hibák
- Futásidejű hibák - kivétel
- Egy robusztus programnak kezelnie kell az összes kivételt, és folytatnia kell a program normál végrehajtását. A Java beépített kivételes kezelési módot kínál
- A Kivételkezelő egy olyan kódkészlet, amely kezel egy kivételt . A kivételeket a Java-ban a try & catch segítségével kezelhetjük.
- Próbáld ki a blokkot : A normál kód megy erre a blokkra.
- Fogási blokk : Ha hiba van a normál kódban, akkor ebbe a blokkba kerül