Kivételek a java
Mint tudod, kivétellel - ezek az események, amelyek akkor a program végrehajtása során. Ezek az események megzavarják a normális dolgok menetét.
próbálja blokk, a fogás
Része a kódot, amely okozhat egy kivétel, amely try blokk.
Kivétel rakodók nyilvánítják a catch blokk után következő try blokk.
Catch blokkok lehet több egy try blokkban.
A catch blokk megy kivételkezelés, és argumentum megadja a kivétel típusát, amely képes kezelni a készülék, azaz a argumentumtípus a típusú kivétel. Kód rögzítik a catch blokkban van egy kivétel kezelő.
A végül blokk
Miután a blokk (ok) lehet elhelyezni, kivéve Köztársaság végül blokkolja. Elfogadható, ha nincs fogás blokkok, de van egy végül blokk. Végül blokk-kódot mindig végre, és nem csak akkor, ha kivétel történik. Lehetőség van, hogy végre befejező lépések szükségesek, tisztítás, például, hogy lezárja az áramlást, és nem a try blokkban. Miután végre a program végrehajtása folytatódik a következő kódsort.
Vázlatosan mindent néz ki:
és nem lehet fogást blokkok, mint ez:
vagy anélkül végül blokk:
Nézzük meg, mi történik, ha egy kivétel lép fel.
Amikor a kivétel, akkor az kivétel objektum keletkezik, amely információkat tartalmaz a kizárás, amely átadásra kerül a rendszerbe. Ilyen esetekben azt mondjuk, hogy sootvestsvuyuschaya program része kivételt dob, azaz Ez létrehoz egy kivételt objektumot, és átadja azt a rendszert. Ezután kezdődik a munka a rendszer, de mielőtt Nézzük meg, meg kell értenünk, mi a hívási verem.
A hívási verem (call stack)
Hívjon Stack (call stack) - a szekvencia metódushívások a fő módszer a módszer érdekes számunkra. Tekintsünk egy hipotetikus példa. Van egy osztály:
Itt egy ilyen hívást stack: fő okoz methodA (), methodA () okoz methodB (), methodB () okoz módszerek ().
Ha methodA () számos fogás blokkok, a rendszer jelölje ki az első egyező blokk, azaz A blokk típus olyan érv, amely megfelel annak a kivétel.
Controlled (ellenőrzött) kivételek. Például a beviteli hibákat. Ilyen kivételek ajánlott feldolgozási;
Error (hiba). Ez a kizárás okozta külső kapcsolatban a kérelem indokai, azok alkalmazását, és mint általában, nem kezeli. Ezek a kivételek meghatározása Error osztályba vagy alosztályba;
Futásidejű kivételeket (futásidejű kivételt). Például a kódon. Ezek a kivételek meghatározása RuntimeException osztályba vagy alosztályba. Ezeket a kivételeket lehet kezelni.
Kivételek a második és harmadik típusú úgynevezett kontrollált (bejelölve) kivételek.
Az eljárás maga is dobni egy kivételt. Ehhez használja a dobás nyilatkozatot, és a kivétel objektum benne. például:
Ha ez például egy <10, то будет выброшено исключение AnException, так, как если бы здесь произошла соответствующая ошибка.
Dobni egy kivételt dobja nyilatkozatot a test és lehet orabotchika egyéb kivételek. Tehát van egy lánc kivételek (láncolt kivételek). például:
Minden kivétel osztályok vissza az Eldobható osztályban. Közvetlen utódai a hiba, és kivétel osztályok. Kivétel fordulhat elő RuntimeException és minden osztály a szabályozott kivételek.
Azt már tudjuk, hogy a kivételek típusú hiba feldolgozó rendszer, mi általában nem érnek.
RuntimeException kivétel típusú hiba a kódban. Ilyen kivételeket lehet kezelni, de jobb, csak kijavítani a hibát.
Kivételek Kivétel típusú problémát jeleznek, de nem súlyos szisztémás. Ilyen hibák kezelni kell.
Hozhat létre saját kivétel osztályok közvetlen vagy sem nasledkov Kivétel. Arról, hogy a nevét ezen osztályok felvenni a szót Kivétel.
Ha az a fajta fogás záradék érv Kivétel. sootvestsvuyuschy kivételével felvezető lesz képes megragadni az összes ellenőrzött RuntimeException kivételek és kivétel típusát. Tehát amit tehetünk, ha nincsenek speciális követelmények a felvezető vagy ha előfordulhat váratlan kivételek. De ha van egy speciális megközelítést, akkor jobb, ha a kivétel örökösök.
Hogyan hozzunk létre egy kivétel osztály?
Tehát hogyan kell kezeljük szabályozott kivételek, mi osztály örökli származó Kivétel.
Összefoglalva, azt Példaképpen idézzük a teljes kódot, melyet tárgyalt ebben a fejezetben. A fő osztály:
Class AnException kivételek:
Class NextException kivételek: