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:

Kapcsolódó cikkek