Jelenlegi hely

18. Kivételkezelés

A kivétel a „kivételes esemény” kifejezés rövidítése.

Definíció: A kivétel egy olyan esemény, amely a program végrehajtásakor keletkezik, megszakítva az utasítások végrehajtásának normális folyamatát.

Ha egy metódusban hiba keletkezik, a metódus egy objektumot hoz létre, melyet átad a futtatási környezetnek. Az objektum – melyet kivétel objektumnak neveznek – tartalmazza az információt a hibáról, annak típusáról és a program állapotáról, amikor a hiba létrejött. Kivétel objektum létrehozását és futtatási rendszer által történő kezelését kivételdobásnak hívják.

Miután egy metódus eldob egy kivételt, a futtató környezet megpróbál a kezelésére találni valamit. A lehetséges dolgok, melyek a kivételt kezelik a meghívott metódusok rendezett listája abban a metódusban, ahol a hiba keletkezett. A metódusok listáját hívási veremnek nevezzük.

Kivételkezelés

A futtató rendszer átkutatja a hívási vermet olyan metódus után, mely tartalmaz kivétel kezelésére alkalmas kódblokkot. Ezt a blokkot kivételkezelőnek nevezzük. A keresés abban a metódusban kezdődik, ahol a hiba generálódott, majd a hívási verem metódusainak fordított sorrendjében folytatódik. Mikor egy megfelelő kezelőt talál, a futtató rendszer, átadja a kivételt a kezelőnek. Egy kivételkezelő megfelelő, ha az eldobott kivétel objektum típusa megegyezik azzal a típussal, melyet a kezelő kezelni tud. A kivételkezelő kiválasztását úgy is nevezik, hogy elkapni a kivételt. Ha a futtatókörnyezet a metódusok átkutatása után sem talál megfelelő kivételkezelőt, mint ahogy a következő ábra mutatja, a futtató rendszer (és ez által a program) leáll.

Hibák kezelése

Hibák kezelésére használt kivételeknek van néhány előnye a hagyományos hibakezelési technikákkal szemben. (Később visszatérünk a témára.)