logo

Kivételek típusai Java nyelven

Java nyelven, kivétel olyan esemény, amely egy program végrehajtása során következik be, és megzavarja a program utasításainak normál áramlását. Azokat a hibákat vagy hibákat, amelyeket nem akarunk, és korlátozzák programunk normál kódfuttatását, úgy hívjuk kivételek . Ebben a részben a típusú kivételek Java-ban és a kettő közötti különbségek.

A kivételeket kétféleképpen lehet csoportosítani:

  1. Beépített kivételek
    • Ellenőrzött kivétel
    • Nincs bejelölve Kivétel
  2. Felhasználó által meghatározott kivételek
Kivételek típusai Java nyelven

Beépített kivétel

Kivételek amelyek már elérhetőek Java könyvtárak néven említik beépített kivétel . Ezek a kivételek képesek meghatározni a hibahelyzetet, hogy megértsük a hiba okát. Két nagy kategóriába sorolható, pl. ellenőrzött kivételek és ellenőrizetlen kivétel .

hashmap java-ban

Ellenőrzött kivétel

Ellenőrizve kivételeket nevezik összeállítási idő kivételek, mert ezeket a kivételeket fordításkor ellenőrzi a fordító. A fordító biztosítja, hogy a programozó kezeli-e a kivételt vagy sem. A programozónak kezelnie kell a kivételt; ellenkező esetben a rendszer fordítási hibát mutatott.

CheckedExceptionExample.java

 import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } } 

A fenti kódban megpróbáljuk elolvasni a Hello.txt fájlt, és megjeleníti annak adatait vagy tartalmát a képernyőn. A program a következő kivételeket dobja:

  1. A FileInputStream (fájl fájlnév) konstruktor dobja a FileNotFoundException ez ellenőrzött kivétel.
  2. A olvas() módszere a FileInputStream osztály dobja a IOException .
  3. A Bezárás() metódus az IOException-t is dobja.

Kimenet:

Kivételek típusai Java nyelven

Hogyan lehet megoldani a hibát?

Alapvetően kétféleképpen tudjuk megoldani ezeket a hibákat.

1) A kivételek a fő módszerben fordulnak elő. Ezektől a fordítási hibáktól megszabadulhatunk, ha a fő metódusban deklaráljuk a kivételt a dobásokat Csak az IOException-t deklaráljuk, a FileNotFoundException kivételt nem, a gyermek-szülő kapcsolat miatt. Az IOException osztály a FileNotFoundException szülőosztálya, így ezt a kivételt automatikusan lefedi az IOException. A kivételt a következő módon hirdetjük ki:

 class Exception{ public static void main(String args[]) throws IOException { ... ... } 

Ha lefordítjuk és lefuttatjuk a kódot, a hibák eltűnnek, és látni fogjuk a fájl adatait.

Kivételek típusai Java nyelven

2) Ezeket a kivételeket a használatával is kezelhetjük próba-elkapni A fentebb használt módszer azonban nem helyes. Minden kivételtípushoz értelmes üzenetet kell adnunk. Ezzel könnyen megérthető a hiba. A try-catch blokkot a következő módon fogjuk használni:

Kivétel.java

 import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } } 

Megfelelő hibaüzenetet fogunk látni 'Fájl nem található!' a konzolon, mert azon a helyen nincs ilyen fájl.

Kivételek típusai Java nyelven

Nincs bejelölve Kivételek

A ellenőrizetlen a kivételek éppen ellentétesek a ellenőrizve kivételek. A fordító nem ellenőrzi ezeket a kivételeket fordításkor. Egyszerűen fogalmazva, ha egy program nem ellenőrzött kivételt dob, és még ha nem is kezeltük vagy deklaráltuk volna, a program nem ad fordítási hibát. Általában akkor fordul elő, ha a felhasználó rossz adatokat közöl a programmal való interakció során.

Megjegyzés: A RuntimeException osztály képes feloldani az összes ellenőrizetlen kivételt a gyermek-szülő kapcsolat miatt.

UncheckedExceptionExample1.java

 class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } } 

A fenti programban a 35-öt elosztottuk 0-val. A kód fordítása sikeresen megtörténik, de futás közben ArithmeticException hibát fog dobni. Ha egy számot elosztunk 0-val, akkor az osztás nullával kivételt dob, amely a bejelölés törlése.

Kimenet:

Kivételek típusai Java nyelven

UncheckedException1.java

 class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } } 

Kimenet:

Kivételek típusai Java nyelven

A fenti kódban a 7-es pozícióban lévő elemet próbáljuk megszerezni, de a tömb hossza 6. A kód sikeresen lefordítható, de futás közben kidobja az ArrayIndexOutOfBoundsException-t.

Felhasználó által meghatározott kivétel

Ban ben Jáva , már van néhány beépített kivételosztályunk, mint pl ArrayIndexOutOfBoundsException , NullPointerException , és Aritmetikai kivétel . Ezek a kivételek bizonyos előre meghatározott feltételekre korlátozódnak. A Java-ban saját kivételosztályunkat írhatjuk az Exception osztály kiterjesztésével. Egy adott feltételre saját kivételt dobhatunk a throw kulcsszó használatával. A felhasználó által definiált kivétel létrehozásához alapvető ismeretekkel kell rendelkeznünk a próba-elkapni blokk és dobás kulcsszó .

Írjunk a Java program és hozzon létre felhasználó által definiált kivételt.

UserDefinedException.java

 import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } } 

Kimenet:

Kivételek típusai Java nyelven

Leírás:

A fenti kódban két osztályt hoztunk létre, azaz UserDefinedException és ÚjKivétel . A UserDefinedException van a fő módszerünk, és a ÚjKivétel osztály a felhasználó által definiált kivételosztályunk, amely kiterjed kivétel . Ban,-ben ÚjKivétel osztályban létrehozunk egy változót x integer típusú, és rendeljen hozzá értéket a konstruktorban. Miután értéket adtunk a változóhoz, a kivétel üzenetet adjuk vissza.

Ban,-ben UserDefinedException osztályt adtuk hozzá a próba-elkapni Blokk. A try részben megdobjuk a kivételt, pl. ÚjKivétel és adj át neki egy egész számot. Az érték átadásra kerül a NewException osztálynak, és üzenetet ad vissza. Elkapjuk az üzenetet a fogásblokkban, és megjelenítjük a képernyőn.

javascript onload script

Különbség a bejelölt és a nem ellenőrzött kivétel között

Igen nem Ellenőrzött kivétel Nincs bejelölve Kivétel
1. Ezeket a kivételeket a fordításkor ellenőrzik. Ezeket a kivételeket a fordításkor is kezeljük. Ezek a kivételek éppen ellentétesek a bejelölt kivételekkel. Ezeket a kivételeket a rendszer nem ellenőrzi és nem kezeli a fordítás során.
2. Ezek a kivételek a kivétel közvetlen alosztályai, de nem bővíthetők ki a RuntimeException osztályból. Ezek a RuntimeException osztály közvetlen alosztályai.
3. A kód fordítási hibát ad abban az esetben, ha egy metódus ellenőrzött kivételt dob. A fordítóprogram önmagában nem tudja kezelni a kivételt. A kód hiba nélkül fordítódik, mert a kivételek elkerülik a fordító figyelmét. Ezek a kivételek a programozási logika felhasználó által létrehozott hibáinak következményei.
4. Ezek a kivételek többnyire akkor fordulnak elő, ha a meghibásodás valószínűsége túl magas. Ezek a kivételek többnyire programozási hibák miatt következnek be.
5. A gyakori ellenőrzött kivételek közé tartozik az IOException, DataAccessException, InterruptedException stb. A gyakori nem ellenőrzött kivételek közé tartozik az ArithmeticException, az InvalidClassException, a NullPointerException stb.
6. Ezek a kivételek a throws kulcsszó használatával kerülnek terjesztésre. Ezeket automatikusan terjesztik.
7. Az ellenőrzött kivétel kezeléséhez meg kell adni a try-catch és a try-finally blokkolást. Ellenőrizetlen kivétel esetén nem kötelező.

Azokat a hibákat vagy hibákat, amelyeket nem akarunk, és korlátozzák a programok normál végrehajtását, úgy hívjuk kivételek .

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions stb. kategóriába tartoznak Beépített kivétel . Néha a beépített kivételek nem elegendőek bizonyos helyzetek magyarázatához vagy leírásához. Ezeknek a helyzeteknek a leírásához létre kell hoznunk saját kivételeinket úgy, hogy létrehozunk egy kivételosztályt a Kivétel osztály. Az ilyen típusú kivételek a kategóriába tartoznak Felhasználó által meghatározott kivétel .