A kivételkezelés a Java-ban az egyik hatékony mechanizmus a specifikus hibák kezelésére, amelyek futásidejű kódszekvenciában merülnek fel. Kivétel nem más, mint egy futásidejű hiba, amely megzavarja az alkalmazás normál folyamatát.
Általában egy kóddarabban fordul elő, és amikor megtörténik, létrejön egy objektum, amely ezt a kivételt képviseli, és dobott abban a módszerben, amely azt okozta. Ennek eredményeként a program vagy az alkalmazás megszakad, aminek következtében az alkalmazás abnormálisan leáll, ami nem ajánlott. Ezért kell ezeket a kivételeket kezelni, és itt áll a kép a kivételek kezelésének mechanizmusáról.
Kétféle kivétel létezik a Java-ban - ellenőrzött és nem ellenőrzött kivétel. Ebben a cikkben részletesen megvitatjuk, hogy mi az ellenőrzött és nem ellenőrzött kivétel, és mikor kell ezeket használni, és végül meglátjuk a különbséget a kettő között.
Ezek a kivételek, amelyeket ellenőriznek és kezelnek a fordítási időpontban. A Java számos kivételes osztályt határoz meg a standard csomagban java.lang, és a leggyakoribb kivételek a standard típusú alosztályok RuntimeException.
Azokat a kivételeket, amelyek a program közvetlen ellenőrzésén kívül eső területeken fordulnak elő, ellenőrzött kivételeknek nevezzük. Ha egy módszer dob egy ellenőrzött kivétel a fordításkor, amely nem tudja kezelni magát, akkor a kivételt a elkapni blokkolja vagy deklarálja a kivételt a dob kulcsszó, különben fordítási hibát fog eredményezni. A fordító megvizsgálja a kivétel objektum típusát mindegyiknél dobás nyilatkozatot, és ha be van jelölve, akkor a fordító ellenőrzi a forráskódot, hogy megbizonyosodjon arról, hogy a kivétel abban a metódusban kerül-e kezelésre, ahol azt dobták vagy deklarálták, így tovább kezelhető.
Minden kivétel, amelyet a Kivétel amelyek a közvetlen alosztályok, kivéve: RuntimeException ellenőrzött kivételeknek hívják. Most mikor kell használni a megjelölt kivételt? Választhat egy ellenőrzött kivételt, ha pontosan tudja, mit kell tennie, amikor Kivétel akkor fordul elő, vagy ha a kudarc esélye nagyobb. Néhány példa a Java könyvtár ellenőrzött kivételeire: IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException, InvocationTargetException stb..
Ezek a kivételek, amelyeket a fordításkor nem ellenőriznek. A nem jelölt kivétel olyan állapotot jelent, amely általában a program logikájának hibáit tükrözi, és amelyet futási időben nem lehet helyreállítani.
Egyszerűen fogalmazva: a nem ellenőrzött kivétel olyan kivétel, amely nem esik be a try-catch Blokk. Nem kell őket kifejezetten elkapni. Valójában, ha nem ellenőrzött kivétel fordul elő, a Java automatikusan kezeli a kivételt. A nem ellenőrzött kivételek általában a programozási hibák miatt fordulnak elő, például amikor tömbkötési elemhez való hozzáféréshez vagy egy null objektumhoz férnek hozzá. A Java-ban az összes eldobható kivétel ellenőrzött kivétel, míg azok a kivételek, amelyek közvetlen alosztálya Hiba és RuntimeException nem ellenőrzött kivételek.
A nem ellenőrzött kivétel legjobb része az, hogy az nem csökkenti a kód olvashatóságát, miközben az ügyfélkód tiszta marad. Néhány példa a nem ellenőrzött kivételekre: ArithmeticException, ClassCastException, NullPointerException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException stb..
Az ellenőrzött és nem jelölt kivétel a Javaban a két kivétel típusa az alkalmazás normál folyamatának biztosítása érdekében. Mindkettő ugyanazt a célt szolgálja, mint a kivételek kezelése a Java-ban, és noha a funkcionalitásban nincs különbség, nincs egyetlen szabály, amely meghatározza, hogy mikor kell használni a jelölőnégyzetet, és mikor kell használni a nem ellenőrzött kivételt. Az ellenőrzött kivétel egy kivétel, amelyet a fordításkor ellenőriznek, míg a nem jelölt kivétel az, amelyet a fordításkor nem ellenőriznek.
Az ellenőrzött kivétel az érvénytelen forgatókönyvekre vonatkozik, amelyek a program közvetlen ellenőrzésén kívül fordulnak elő, míg a nem ellenőrzött kivétel a program hibáira vagy a program logikájának hibáira utal, amelyeket a futásidejűleg nem lehet helyreállítani..
Ha egy módszer ellenőrzött kivételt dob, a fordító ellenőrzi, hogy a módszer kezeli-e ezt a kivételt try-catch blokk segítségével, vagy megadja a kivételt a throws kulcsszóval. Ha a módszer nem biztosítja a kezelési kódot, akkor fordítási hibát fog mutatni. Éppen ellenkezőleg, a program csak finoman fordul, mert a fordító nem ellenőrzi a nem ellenőrzött kivételeket a fordítás idején.
A kivételeket, amelyek nem származnak a RunTimeException-ről, gyakran kezelik, míg mivel a kivételek futási időben fordulnak elő, ritkán kezelik őket. Ellenőrzött kivétel akkor fordul elő, ha a kudarc esélye túl magas. Az ellenőrizetlen kivétel viszont elsősorban a programozási hibák miatt fordul elő. A RuntimeException és a Error osztályok összes kivétele nem ellenőrzött kivétel, míg az összes más, a dobható alá tartozó ellenőrzött kivétel.
Néhány példa az ellenőrzött kivételekre: IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException és még sok más. Nem ellenőrzött kivételekre példák a NullPointerException, ArithmeticException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException stb..
Az ellenőrzött és nem jelölt kivétel a Java-ban létező két kivétel típusa. Noha a funkcionalitás mindkét kivételnél azonos, a különbségeknek méltányos részük van. Az ellenőrzött és nem ellenőrzött kivételek közötti fő különbség az, hogy az előbbit a fordító ellenőrzi, míg az utóbbi elkerüli a fordító figyelmeztetését. A fordítás idején ellenőrzött és kezelt kivételek ellenőrzött kivételek, míg azok a kivételek, amelyeket nem ellenőriznek és kezelnek a fordítás idején, nem ellenőrzött kivételek. Ez a cikk elmagyarázza, hogy mi van ellenőrizve, és mi a nem ellenőrzött kivétel, mikor kell használni őket, és ismerteti a kettő közötti különbséget.