Ajánlott, 2024

Szerkesztő Választása

Az ellenőrzött és a nem ellenőrzött kivételek közötti különbség a Java-ban

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 alapjaEllenőrzött kivételNem 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ályaKivé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éseHa 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ásA 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Top