A Java kivételek három típusa

A hibák a felhasználók és a programozók egyaránt hátráltatják. A fejlesztők nyilvánvalóan nem akarják, hogy programjaik minden fordulaton esjenek le, és a felhasználók ma már annyira hozzászoktak, hogy hibáik vannak azok a programok, amelyek bántalmazással elfogadják az ár megfizetését olyan szoftverért, amelynek szinte biztosan legalább egy hibája van azt. Jáva célja, hogy sportos esélyt adjon a programozónak a hibamentes alkalmazás tervezéséhez. Kivételt képeznek olyan kivételek, amelyekről a programozó tudomásul veszi a lehetőségeket, amikor egy alkalmazás kölcsönhatásba lép egy erőforrással vagy egy felhasználóval, és ezek a kivételek kezelhetők. Sajnos vannak olyan kivételek, amelyeket a programozó nem tud ellenőrizni, vagy egyszerűen figyelmen kívül hagyja. Röviden: az összes kivétel nem azonos, ezért a programozónak többféle típusa van, amelyekre gondolkodni kell.

Kivétel egy olyan esemény, amely miatt a program nem képes folyni a tervezett végrehajtás során. Háromféle kivétel létezik: az ellenőrzött kivétel, a hiba és a futásidejű kivétel.

instagram viewer

Az ellenőrzött kivétel

Az ellenőrzött kivételek olyan kivételek, amelyekkel egy Java alkalmazásnak képesnek kell lennie. Például, ha egy alkalmazás adatokat olvas egy fájlból, akkor képesnek kell lennie a FileNotFoundException. Végül is nincs garancia arra, hogy a várt fájl ott lesz, ahol állnia kell. Bármi megtörténhet a fájlrendszeren, amiről az alkalmazásnak semmiféle nyom nincs.

Hogy ezt a példát egy lépéssel tovább vehessük. Tegyük fel, hogy a FileReader osztály karakterfájl olvasásához. Ha megnézi a A FileReader konstruktor meghatározása a Java alkalmazásban látni fogja a módszer aláírását:

nyilvános FileReader (karakterlánc fájlnév) a FileNotFoundException fájlt dobja.

Mint láthatja, a kivitelező kifejezetten kijelenti, hogy a FileReader kivitelező dobhat a FileNotFoundException. Ennek van értelme, mivel nagyon valószínű, hogy a fájl név A karakterlánc időről időre rossz lesz. Nézd meg a következő kódot:

nyilvános statikus void main (karakterlánc [] args) { FileReader fileInput = null; // Nyissa meg a bemeneti fájlt. fileInput = új FileReader ("Untitled.txt"); }

Szintaktikailag az állítások helyesek, de ez a kód soha nem fordul elő. A fordító ismeri a FileReader kivitelező dobhat a FileNotFoundException és ez a kivétel a hívószám függvénye. Két lehetőség van: először átadhatjuk a kivételt módszerünkről az a megadásával dob záradék is:

public statical void main (karakterlánc [] args) dob FileNotFoundException { FileReader fileInput = null; // Nyissa meg a bemeneti fájlt. fileInput = új FileReader ("Untitled.txt"); }

Vagy valóban kezelhetjük azzal a kivétellel:

nyilvános statikus void main (karakterlánc [] args) { FileReader fileInput = null; próbáld ki. { // Nyissa meg a bemeneti fájlt. fileInput = új FileReader ("Untitled.txt"); } fogás (FileNotFoundException ex) { // mondja meg a felhasználónak, hogy keresse meg a fájlt. } }

A jól megírt Java alkalmazásoknak képesnek kell lenniük az ellenőrzött kivételek kezelésére.

hibák

A kivétel második fajtáját hibának nevezzük. Kivétel esetén a JVM kivételes objektumot hoz létre. Ezek az objektumok mind a Eldobható osztály. Az Eldobható az osztálynak két fő alosztálya van: Hiba és Kivétel. Az Hiba osztály azt a kivételt jelöli, amelyet az alkalmazás valószínűleg nem képes kezelni.

Ezek a kivételek ritkák. Például, a JVM-hez elfogyhatnak az erőforrások, mivel a hardver nem képes megbirkózni az összes folyamatával, amelyre ki kell terjednie. Lehetséges, hogy az alkalmazás észleli a hibát, hogy értesítse a felhasználót, de általában az alkalmazásnak bezárnia kell mindaddig, amíg a mögöttes probléma megoldódik.

Futásidejű kivételek

A futásidejű kivétel pusztán azért fordul elő, mert a programozó hibázott. Írta a kódot, ez nagyon jól néz ki a fordítónak, és amikor futtatni akarja a kódot, akkor az esik megpróbált hozzáférni egy tömb olyan eleméhez, amely nem létezik, vagy egy logikai hiba miatt a metódus null értékű volt érték. Vagy bármilyen hibát elkövethet egy programozó. De ez rendben van, ezeket a kivételeket kimerítő teszteléssel látjuk, ugye?

A hibák és a futásidejű kivételek a nem ellenőrzött kivételek kategóriájába tartoznak.