Kivételek kezelése Java

Miben szerepel a kivétel Java?

Kivétel in Java olyan esemény, amely megszakítja a programutasítások végrehajtását és megzavarja a programvégrehajtás normál lefolyását. Ez egy olyan objektum, amely a metóduson belül fellépő hibaesemény-információkat csomagolja, és átadja a futásidejű rendszernek. In Java, a kivételek főként a különböző típusú hibaállapotok jelzésére szolgálnak.

Kétféle hiba létezik:

  1. Fordítási idő hibák
  2. Futásidejű hibák

A fordítási idő hibák ismét két típusba sorolhatók:

  • Szintaxis hibák
  • Szemantikai hibák

Példa szintaktikai hibákra:

Ahelyett, hogy kijelentené int a; tévedésből így nyilatkoztad in a; amelyre a fordító hibát dob.

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ál mint int a;. Mindezek a hibák kiemelésre kerülnek a kód összeállításakor.

Példa futásidejű hibákra

A futásidejű hibát an kivételek hiba. Bármilyen esemény megszakítja a programvégrehajtás normál folyamatát. Példák a kivételekre: aritmetikai kivétel, Nullpointer kivétel, Osztás nullával kivétel stb. Java olyan dolgok, amelyeket a fejlesztők nem irányíthatnak.

Kattints itt ha a videó nem érhető el

Miért van szükségünk kivételre?

Tegyük fel, hogy kódolt egy programot a szerver eléréséhez. A dolgok jól működtek a kód fejlesztése közben.

Java kivétel kezelése

A tényleges termelési futás során a szerver nem működik. Amikor a program megpróbált hozzáférni, kivételt jelent.

Java kivétel kezelése

Hogyan kezeljük a kivételeket

Eddig azt láttuk, hogy a kivétel a fejlesztők hatáskörén kívül esik. De nem megoldás, ha a kód meghibásodását a környezeti problémák miatt hibáztatja. Robusztus programozásra van szüksége, amely gondoskodik a kivételes helyzetekről. Az ilyen kód ún Kivételkezelő.

Példánkban a jó kivételkezelés az lenne, ha a szerver leállása esetén csatlakozna a tartalék szerverhez.

Java kivétel kezelése

Ennek megvalósításához adja meg a kódot a szerverhez való csatlakozáshoz (hagyományos if és else feltételekkel). Ellenőrzi, hogy a szerver leállt-e. Ha igen, írja be a kódot a biztonsági mentési szerverhez való csatlakozáshoz. A kód ilyen rendszerezése az „if” és az „else” ciklus használatával nem hatékony, ha a kódnak több van java kivételek kezelni.

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

Próbáld ki a Catch Block-ot

Java beépített kivételes kezelhetőséget biztosít.

  1. A normál kód a TRY Blokk.
  2. A kivételkezelő kód a FOGÁS blokkolni

Próbáld ki a Catch Block-ot

Példánkban a TRY blokk tartalmazza a szerverhez való csatlakozás kódját. A CATCH blokk tartalmazza a biztonsági mentési szerverhez való csatlakozás kódját. Ha a szerver be van kapcsolva, a CATCH blokkban lévő kód figyelmen kívül marad. Abban az esetben, ha a kiszolgáló leáll, kivétel keletkezik, és a program a catch blokkban lévő kódot hajtja végre.

Próbáld ki a Catch Block-ot

Tehát a kivételt így kezelik Java.

Szintaxis a try & catch használatához

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

Példa

Step 1) Másolja be 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");
   }
}

Step 2) Mentse el a fájlt és fordítsa le a kódot. Futtassa a programot a java paranccsal Javakivétel

Step 3) Egy aritmetikai kivétel – az 5. sornál a nullával való osztás az alábbiak szerint látható, és a 6. sor soha nem hajtódik végre

Step 4) Most pedig nézzük meg, hogyan segít a try and catch a kivétel kezelésében. A kódsort okozó kivételt az a-ba helyezzük megpróbál blokk, majd a fogás tömb. Másolja be 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");
 }
}

Step 5) Mentse, fordítsa le és futtassa a kódot. A következő kimenetet kapja

Próbáld ki a Catch Block-ot

Ahogy észreveszi, a kivételt kezeli, és az utolsó kódsort is végrehajtja. Azt is vegye figyelembe, hogy a #7. sor nem kerül végrehajtásra, mert amint kivételt emelnek, a vezérlés áramlása a fogóblokkhoz ugrik.

Jegyzet: Az „e” AritmeticException objektum információkat tartalmaz a bekövetkezett kivételről, ami hasznos lehet a helyreállítási műveletek végrehajtása során.

Java Kivétel osztályhierarchia

Az egyik catch utasítás végrehajtása után a többi kihagyásra kerül, és a végrehajtás a try/catch blokk után folytatódik. A beágyazott fogási blokkok kivételek hierarchiáját követik.


Java Kivételi hierarchia

  • Minden kivételes osztály Java kiterjeszteni a „dobható” osztályt. A Throwable-nak két alosztálya van, az Error és az Exception
  • Az Error osztály meghatározza a kivételt vagy azokat a problémákat, amelyek normál körülmények között a programunk által nem várhatóak, például memóriahiba, hardverhiba, JVM hiba stb.
  • Az Exception osztály a programunk által kezelhető kivételeket képviseli, és programunk a try and catch blokk segítségével visszaállítható ebből a kivételből
  • A futásidejű kivétel a kivételosztály egyik alosztálya. Az Exception ezen típusa kivételeket jelent, amelyek a futási időben fordulnak elő, és amelyeket nem lehet nyomon követni a fordítási időben. Ennek kiváló példája az osztás nullával kivétel, vagy a nullmutató kivétel stb
  • Az IO kivétel a bemeneti és kimeneti műveletek során jön létre
  • Megszakított kivételek itt Java, többszörös szálfűzés során keletkezik.

Példa: A try and catch blokkok egymásba ágyazásának megértése

Step 1) Másolja be 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");
 }
}

Step 2) Mentse el a fájlt és fordítsa le a kódot. Futtassa a programot a paranccsal, Jáva Javakivétel.

Step 3) Egy ArrayIndexOutOfBoundsException jön létre. Módosítsa az int d értékét 0-ra. Mentse, fordítsa le és futtassa a kódot.

4 lépés) Aritmetikai kivételt kell generálni.

Step 5) Törölje a megjegyzéseket a 10. sortól a 12. sorig. Mentse, fordítsa le és futtassa a kódot.

Step 6) Összeállítási hiba? Ennek az az oka, hogy az Exception az AritmetikaiKivétel-kivétel alaposztálya. Az ArithmeticException által felhozott kivételeket az Exception osztály is kezelheti. Így az ArithmeticException fogási blokkja soha nem kap lehetőséget a végrehajtásra, ami feleslegessé teszi. Innen a fordítási hiba.

Java Végül Blokkolás

A végső blokk az kivételtől függetlenül végrehajtják a try blokkban. Ez választható próba blokkal való használatra.

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

  statement(s)

 } finally {

  statement(s)

 }

Abban az esetben, ha kivétel lép fel a try blokkban, végül a blokk végrehajtása a catch blokk végrehajtása után történik.

Példa

Step 1) Másolja be 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");
  }
}
}

Step 2) Mentse, fordítsa le és futtassa a kódot.

Step 3) Várható kimenet. Végül a blokk végrehajtásra kerül, még akkor is, ha kivétel történt.

Step 4) Módosítsa a d = 1 változó értékét. Mentse, fordítsa le és futtassa a kódot, és figyelje meg a kimenetet. Az űrlap alja

Összegzésként

  • An A kivétel a futásidejű hiba amely megszakítja a programvégrehajtás normál folyamatát.A program végrehajtása során bekövetkezett zavart hibának vagy kivételnek nevezzük.
  • A hibákat két kategóriába sorolják
    • Fordítási időbeli hibák – Szintaktikai hibák, Szemantikai hibák
    • Futásidejű hibák – Kivétel
  • A A robusztus programnak minden kivételt kezelnie kell és folytassa a szokásos programvégrehajtási folyamattal. Java beépített kivételes kezelési módszert biztosít
  • Az Exception Handler egy olyan kódkészlet, amely kivételt kezel. A kivételek kezelhetők Java a try & catch segítségével.
  • Próbáld blokkolni: Normál kód megy erre a blokkra.
  • Catch blokk: Ha hiba van a normál kódban, akkor ebbe a blokkba kerül

Foglald össze ezt a bejegyzést a következőképpen: