Különbség az ellenőrzött kivétel és a futásidejű kivétel között

Különbség az ellenőrzött kivétel és a futásidejű kivétel között
Különbség az ellenőrzött kivétel és a futásidejű kivétel között

Videó: Különbség az ellenőrzött kivétel és a futásidejű kivétel között

Videó: Különbség az ellenőrzött kivétel és a futásidejű kivétel között
Videó: Relative Velocity - Basic Introduction 2024, Július
Anonim

Ellenőrzött kivétel vs futásidejű kivétel

A kivételek különleges típusú események, amelyek megzavarhatják a normál műsorfolyamot. A név kivétel a „kivételes eseményből” származik. A kivétel dobása egy kivételobjektum létrehozásának és a futásidejű rendszernek való átadásának folyamata. Amikor a futásidejű rendszer megkapja a kivételobjektumot, megpróbál keresni valakit, aki kezelni fogja azt a hívási veremben úgy, hogy fordított sorrendben (a metódusok meghívásának megfelelően) bejárja. A futásidejű rendszer akkor sikeres, ha kivételkezelővel rendelkező metódust talál. A kivételkezelő egy kódblokk, amely hivatalosan képes kezelni az említett kivételt. Ha a futásidejű rendszer talál megfelelő kezelőt, átadja a kivételobjektumot a kezelőnek. Ezt hívják a kivétel elkapásának. Ha azonban a kivétel nem kezelhető, a program leáll. Java-ban a kivételek a Throwable osztályból öröklődnek. A bejelölt kivételek olyan kivételek, amelyek kezelését a fordító kényszeríti ki. A futásidejű kivételek a kivételek egy fajtája, amelyeket a fordító nem ellenőriz.

Mi az a bejelölt kivétel?

A bejelölt kivételek vagy a java.lang.exception osztály vagy annak alosztályai objektumai (kivéve a java.lang. RuntimeException és alosztályai). Az ellenőrzött kivételeket a fordításkor „ellenőrzik”. Ez azt jelenti, hogy a programozónak vagy el kell fogadnia vagy el kell dobnia ezeket a kivételeket, különben a fordítás panaszkodik (fordítói hibát okozva). Emiatt sok ellenőrzött kivétel nagyon jól ismert a programozók számára. Például az IOException és annak alosztályai ellenőrzött kivételek, és amikor a programozó egy fájl elérésével vagy módosításával foglalkozik, a fordító ellenőrzi, hogy a programozó minden lehetséges IOExceptionről gondoskodjon.

Mi az a futásidejű kivétel?

A futásidejű kivételek a java.lang. RuntimeException-ből és annak összes alosztályából állnak. Elméletileg ugyanazt a célt szolgálják, mint az ellenőrzött kivételek, és kidobhatók, vagy ellenőrzött kivételként kezelhetők, de kezelésüket a fordító nem kényszeríti ki. Ezért a futásidejű kivételek a nem ellenőrzött kivételek családjába tartoznak. A NullPointerException, a NumberFormatEception, a ClassCastException és az ArrayIndexOutOfBoundsException gyakori futásidejű kivételek a Java-ban.

Mi a különbség az ellenőrzött kivétel és a futásidejű kivétel között?

Bár mind az ellenőrzött kivételek, mind a futásidejű kivételek nemkívánatos előfordulások egy program végrehajtása során, vannak különbségeik. Az ellenőrzött kivételkezelést a fordító kényszeríti ki, de a futásidejű kivételeket nem. Ezért az ellenőrzött kivételeket ki kell dobni vagy kezelni kell a kód fordításához, de a futásidejű kivételekre nincs ilyen követelmény. Következésképpen a futásidejű kivételek a nem ellenőrzött kivételek kategóriába tartoznak a hibákkal együtt.

Hátrány ellenőrzött kivételekkel, hogy a programozónak akkor is kezelnie kell, ha nem tudja, hogyan kell. Tehát, ha a programozó új kivételt dob az eredeti becsomagolása nélkül, akkor az eredeti kivételhez tartozó veremnyom elveszik. Itt jönnek jól a futásidejű kivételek. Mivel az összes futásidejű kivétel egy helyen kezelhető, így a programozók kevesebb kódot tudnak írni. Másrészt, mivel az ellenőrzött kivételeket el kell fogni, nincs meglepetés a programozó számára. Mindig tudni fogja, hogy egy bizonyos módszer melyik ellenőrzött kivételt dobhatja ki. Ezzel ellentétben a programozó tudta nélkül különböző futásidejű kivételek dobhatók fel.

Ajánlott: