Kivételek kezelése Java
⚡ Okos összefoglaló
Java A kivételkezelés strukturált mechanizmust biztosít a futásidejű hibák kezelésére, amelyek megzavarják a normál programfolyamatot. A try, catch, finally, throw és throws kulcsszavakat használja a kivételes körülmények észlelésére, izolálására és helyreállítására, miközben megtartja aping az alkalmazások robusztusak és kiszámíthatóak.

Mi a kivétel a Java?
An Kivétel in Java egy olyan esemény, amely megszakítja a program utasításainak végrehajtását és megzavarja a program végrehajtásának normális menetét. Ez egy olyan objektum, amely becsomagolja a metóduson belül bekövetkezett hibaesemény információit, és átadja azokat a futásidejű rendszernek. A JavaA kivételeket főként különböző típusú hibák jelzésére használják, hogy a fejlesztők ellenőrzött módon reagálhassanak rájuk.
A hibáknak két nagy kategóriája van Java:
- Fordítási idő hibák
- Futásidejű hibák
A fordítási idejű hibák további 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.
Szemantikai hibákra példa: Deklaráltál 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 úgy nevezik, mint egy kivétel. Bármely olyan esemény, amely megszakítja a program végrehajtásának normális menetét. A kivételekre példák az aritmetikai kivétel, a NullPointerException, a nullával osztás kivétel és sok más. Kivételek a Java olyan körülmények, amelyek gyakran kívül esnek a fejlesztő közvetlen ellenőrzésén.
Kattints itt ha a videó nem érhető el
Miért van szükségünk kivételkezelésre?
Tegyük fel, hogy kódoltál egy programot egy szerver eléréséhez. A fejlesztés alatt minden jól működik.ping a kódot egy helyi környezetben, ellenőrzött feltételek mellett.
Egy tényleges éles futtatás során a szerver leállhat. Amikor a program megpróbálja elérni, kivétel keletkezik, és megfelelő kezelés nélkül a program hirtelen leáll.
Hogyan kezeljünk egy kivételt a Java
Eddig láttuk, hogy a kivételek gyakran kívül esnek a fejlesztő irányításán. A kódhibákért a környezeti problémákat hibáztatni azonban nem jelent valódi megoldást. Robusztus programozásra van szükség, amely kezeli a kivételes helyzeteket. Az ilyen kódot egy Kivételkezelő.
A példánkban a jó kivételkezelés azt jelentené, hogy amikor az elsődleges szerver nem működik, a program automatikusan csatlakozik egy tartalék szerverhez.
Ennek megvalósításához írhatsz kódot a szerverhez való csatlakozáshoz a hagyományos if és else feltételek használatával. Ellenőrizheted, hogy a szerver nem működik-e, és ha igen, akkor írsz kódot a tartalék szerverhez való csatlakozáshoz. A kód ilyen „if” és „else” ágakat használó szervezése nem hatékony, ha a kódod több… 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 Blockot Java
Java beépített kivételkezelési mechanizmust biztosít, amely elválasztja a normál logikát a hibajavítási logikától.
- A normál kód a TRY Blokk.
- A kivételkezelő kód a FOGÁS Blokk.
Példánkban a TRY blokk a szerverhez való csatlakozáshoz szükséges kódot tartalmazza. A CATCH blokk a tartalék szerverhez való csatlakozáshoz szükséges kódot tartalmazza. Ha a szerver elérhető, a CATCH blokkban lévő kód figyelmen kívül marad. Ha a szerver nem működik, kivétel keletkezik, és a catch blokkban lévő kód végrehajtódik.
Tehát így kezeli a rendszer a kivételt Java.
A try és catch használatának szintaxisa
try{ statement(s) } catch (exceptiontype name){ statement(s) }
Példa a Try Catch blokkra
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 következő paranccsal: java JavaKivétel.
Step 3) Egy aritmetikai kivétel, a nullával osztás, az 5. sorban látható, a 6. sor pedig soha nem kerül végrehajtásra.
Step 4) Most vizsgáljuk meg, hogyan segít a try és a catch metódusok ennek a kivételnek a kezelésében. A kivételt okozó kódsort egy 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) Mentsd el, fordítsd le és futtasd a kódot. A következő kimenetet kapod.
Ahogy megfigyelheted, a kivétel kezelése megtörténik, és a kód utolsó sora is végrehajtásra kerül. Azt is vedd figyelembe, hogy a 7. sor nem fog végrehajtódni, mert amint kivételt emelnek, a vezérlés áramlása a fogóblokkhoz ugrik.
Jegyzet: Az „e” ArithmeticException objektum a bekövetkezett kivételről tartalmaz információkat, amelyek hasznosak lehetnek a helyreállítási műveletek végrehajtásakor.
Java Kivételosztály-hierarchia
Miután egy catch utasítás végrehajtódik, a többi kimarad, és a végrehajtás a try és catch blokk után folytatódik. A beágyazott catch blokkoknak a kivételhierarchiát kell követniük a legspecifikusabb alosztálytól a legáltalánosabb szülő osztályig.
- Minden kivételes osztály Java Bővítsd ki a Throwable osztályt. A Throwable osztálynak két alosztálya van, az Error és az Exception.
- Az Error osztály azokat a kivételeket vagy problémákat definiálja, amelyek várhatóan nem fordulnak elő normál körülmények között a programban, például memóriahiba, hardverhiba vagy JVM hiba.
- Az Exception osztály azokat a kivételeket jelöli, amelyeket a programunk kezelni tud, és a programunk a try és catch blokkok segítségével képes helyreállni ezekből a kivételekből.
- A RuntimeException az Exception osztály egy alosztálya. Az ilyen típusú kivételek ellenőrizetlen kivételeket jelentenek, amelyek futásidőben fordulnak elő, és fordítási időben nem észlelhetők. Jó példák erre az osztás nullával kivétel és a null pointer kivétel.
- Az IOException kivétel a bemeneti és kimeneti műveletek során keletkezik.
- Megszakított kivétel a következőben: Java többszálú műveletek során keletkezik, amikor egy szál megszakad.
Példa: Try és catch blokkok egymásba ágyazása
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 következő paranccsal: Jáva Javakivétel.
Step 3) Egy ArrayIndexOutOfBoundsException kivétel generálódik. Változtassa meg az int d értékét 0-ra. Mentse el, fordítsa le és futtassa a kódot.
Step 4) ArithmeticException kivételt kell generálni.
Step 5) Töröld ki a 10. sort a 12. sorra kommentből. Mentsd el, fordítsd le és futtasd a kódot.
6. lépés) Fordítási hiba? Ez azért van, mert az Exception az ArithmeticException alaposztálya. Az ArithmeticException által generált bármilyen kivételt az Exception osztály is képes kezelni. Tehát az ArithmeticException catch blokkja soha nem kap lehetőséget a végrehajtásra, ami redundánssá teszi. Ezért keletkezik 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ó try blokkal együtt használható. A finally blokk a megfelelő hely az erőforrások, például adatbázis-kapcsolatok, fájlok vagy hálózati socketek felszabadítására.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Ha a try blokkban kivétel keletkezik, a finally blokk a catch blokk befejezése után kerül végrehajtásra.
Példa a Finally Blockra
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 el, fordítsa le és futtassa a kódot.
Step 3) Várt kimenet: A finally blokk végrehajtásra kerül annak ellenére, hogy kivétel keletkezik.
Step 4) Változtasd meg a d változó értékét 1-re. Mentsd el, fordítsd le és futtasd a kódot, majd figyeld meg a kimenetet.
A legjobb gyakorlatok Java kivétel kezelése
Néhány bevált szabály betartása segít megőrizni a... Java kód rugalmas, olvasható és könnyen hibakereshető:
- Először a legspecifikusabb kivételt fogd meg, majd az általánosabbakat, hogy megőrizd a kivételhierarchia integritását.
- Kerüld az üres catch blokkokat. Legalább a kivételt naplózd, hogy a kiváltó ok soha ne vesszen el.
- Használd a finally blokkot, vagy próbáld ki az erőforrásokkal fájlok, socketek és adatbázis-kapcsolatok felszabadításához.
- Csak akkor dobjon ellenőrzött kivételeket, ha a hívó ésszerűen helyre tudja állítani a hibát, és programozási hibák esetén használjon ellenőrizetlen kivételeket.
- Az alacsony szintű kivételeket egy értelmes üzleti kivételbe kell csomagolni az API-k biztonságának megőrzése érdekében.tractiszta.
- Soha ne nyeld le csendben az InterruptedException-t többszálú kódban, ehelyett állítsd vissza a megszakításjelzőt.







