Az „Eldobható” az osztályok és a Kivételek osztályok szülőosztálya. A „RuntimeException” és alosztályai, a „Error” osztály és a gyermekosztályai a „nem ellenőrzött kivételek”, míg a „Kivétel” osztály kivételével a „RuntimeException” kivételével fennmaradó alosztályok az ellenőrzött kivételek. Az ellenőrzött és a nem ellenőrzött kivétel közötti különbség az, hogy az ellenőrzött kivételeket a fordító ellenőrzi, míg a fordító nem ellenőrzi a nem ellenőrzött kivételeket .
Az összehasonlító táblázat segítségével megvitassuk az ellenőrzött és a nem ellenőrzött kivételek közötti különbségeket.
Összehasonlító táblázat
Az összehasonlítás alapja | Ellenőrzött kivétel | Nem ellenőrzött kivétel |
---|---|---|
Alapvető | A fordító ellenőrzi az ellenőrzött kivételt. | A fordító nem ellenőrzi a Nem ellenőrzött kivételt. |
Kivétel osztálya | Kivéve a "RuntimeException" osztályt, a "Kivétel" osztályba tartozó összes gyermekosztályt és a "Hiba" osztályt és annak gyermekosztályait ellenőrzött kivétel. | A "RuntimeException" osztály és gyermekosztályai a "Nem ellenőrzött kivételek". |
Kezelése | Ha nem kezeli az ellenőrzött kivételt, akkor a fordító objektumokat. | Még ha nem is kezeljük a nem ellenőrzött kivételt, a fordító nem tiltakozik. |
Összeállítás | A program nem fordít össze, ha a programkódban nem kezelt ellenőrzött kivétel van. | A program akkor is sikeresen összeáll, ha a programkódban nem kezelt, nem ellenőrzött kivétel van. |
Az ellenőrzött kivétel meghatározása
Az ellenőrzött kivételek azok a kivételek, amelyeket a fordító ellenőrzi a program zökkenőmentes végrehajtásához. A fordító ellenőrzi, hogy a program képes-e kezelni az ellenőrzött kivételt, vagy sem. Ha a kód nem tudja kezelni a kivételt, akkor fordítási hiba lép fel. A „Kivétel” osztály összes alosztálya a RuntimeException osztály kivételével az ellenőrzött kivételek.
Vizsgáljuk meg az ellenőrzött kivételt egy példával.
import java.io *; class példa {public static void main (String args []) {FileInputStream fis = null; fis = új FileInputStream ("B: /myfile.txt"); // Ez a FileInputStream (Fájl fájlnév) konstruktor egy FileNotFoundException programot dob, amely egy ellenőrzött kivétel. int k; míg a ((k = fis.read ())! = -1) {// A FileInputStream osztály () metódusa olvasott kivételt eredményez: IOException. System.out.print ((char) k); } fis.close (); // A módszer bezárása () bezárja az IOException által dobott fájlbeviteli folyamot. }}
A fenti kódban megpróbáljuk megnyitni, olvasni és megjeleníteni a fájl tartalmát. Előfordulhat, hogy a fájl nincs jelen, akkor a FileNotFoundException megtörténik, amely ellenőrzött kivétel. Ha az ellenőrzött kivételt nem kezeli, akkor a fordító nem teszi lehetővé a program zökkenőmentes összeállítását. A fordítási idő hiba jelenik meg. Tehát a zökkenőmentes összeállítás érdekében az ellenőrzött kivételt el kell fogni vagy dobni kell.
A nem ellenőrzött kivétel meghatározása
Nem ellenőrzött Kivételek azok a kivételek, amelyeket a fordító nem ellenőrzi. A fordító sikeresen összeállítja a programot, még akkor is, ha a kivételeket a kód nem kezeli. A „Hiba” osztály és gyermekosztályai, az „Runtime” osztály és alosztályai a nem ellenőrzött kivételek.
Lássunk egy példát egy nem ellenőrzött kivételre.
osztály Példa {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }}
A fenti kódban láthatjuk, hogy van egy ArrayIndexOutOfBoundsException, mivel megpróbálom elérni a nem létező elemet. Mivel ez egy kivétel nélküli kivétel, nem fordul elő fordítási hiba, és a fájl minden hiba nélkül összeáll. De a program nem fog végrehajtani, amíg a kivételt nem kezeli. Tehát a zökkenőmentes végrehajtás érdekében a kivételeket el kell fogni, vagy el kell dobni
Az ellenőrzött és a nem ellenőrzött kivételek közötti fő különbségek
- Az ellenőrzött kivételek a fordító ismeretében vannak, míg a nem ellenőrzött kivételek nem a fordító ismeretében vannak.
- A RuntimeException és a Error class kivételével az összes osztály ellenőrzött kivétel. Másrészt a RuntimeException és a Error osztályok nem ellenőrzött kivételek.
- Ha az ellenőrzött kivételeket a kód nem kezeli, akkor a fordító objektumok. Másrészt, ha nem kezeli a nem ellenőrzött kivételeket a kódban, a fordító nem tiltakozik.
- Ha az ellenőrzött kivételek a kódban fordulnak elő, a kód nem áll össze, míg még akkor is, ha a kód nem kezeli az ellenőrzött kivételeket, a fordító még mindig összeállítja a kódot.
Jegyzet :
Mind az ellenőrzött, mind a nem ellenőrzött kivétel kötelező a futás közben. A fordító csak a fordító során ellenőrzi vagy nem ellenőrzi őket.
Következtetés:
A program zökkenőmentes végrehajtásához mind az ellenőrzött, mind a nem ellenőrzött kivételeket kell kezelni.