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:
- Fordítási idő hibák
- 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.
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.
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.
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.
- A normál kód a TRY Blokk.
- A kivételkezelő kód a FOGÁS blokkolni
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.
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
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.
- 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







