Kivétel vs Hiba
A program futásakor váratlan viselkedésre kerülhet sor. Ennek oka kivételek vagy hibák lehetnek. Kivételt képeznek olyan események, amelyek zavarhatják a normál programfolyamatot. A hibák olyan körülmények, amelyeket helyrehozhatatlannak lehet tekinteni. A kivételek nagyrészt maga az alkalmazáshoz kapcsolódnak, míg a hibák a rendszer futtatásához kapcsolódnak, amelyen a program fut.
Milyen kivétel??
Kivétel egy olyan esemény, amely zavarhatja a normál programfolyamatot. A kivétel a „rendkívüli eseményből” származik. Kivétel dobása a kivétel objektum létrehozásának és a futási rendszernek való átadásának folyamata. A kivételes objektumot az a módszer hozza létre, amelyben a kivétel bekövetkezett. A kivételes objektum hasznos információkat tartalmaz, például a kivétel típusát és leírását. Amikor a futásidejű rendszer megkapja a kivételes objektumot, megpróbálja megtalálni valakit, aki kezelni tudja azt a hívásveremben, fordított sorrendben (ahogyan a metódusokat hívták). A hívásverem azon módszerek rendezett listája, amelyeket azon eljárás előtt hívtak meg, amelyben a kivétel bekövetkezett. A futásidejű rendszer sikeres, ha egy módszert talál kivételkezelővel. A kivételkezelő egy olyan kódblokk, amely hivatalosan képes kezelni az említett kivételt. Ha a futásidejű rendszer talál egy megfelelő kezelőt (azaz a kivétel típusa megegyezik a kezelhető típusával), akkor a kivétel objektumot átadja a kezelőnek. Ezt nevezzük a kivétel megragadásának. Ha azonban a kivétel nem kezelhető, a program leáll. A Java-ban a kivételek a „Throvable class” -ből származnak. A NullPointerException és az ArrayIndexOutOfBoundsException két általános kivétel a Java-ban.
Mi a hiba?
A hiba olyan állapot, amelyet helyrehozhatatlannak lehet tekinteni, például a program a rendelkezésre állónál nagyobb memóriamennyiséget igényel. Ezek a hibák nem kezelhetők futási időben. Hiba esetén a program leáll. A Java-ban a hibák a Throvable osztálytól származnak. A hibák általában olyan súlyos problémákkal járnak, amelyeket a programozó (vagy az alkalmazás) nem szabad megkísérelnie. A hibák egyszerűen szokatlan körülmények, amelyek normál körülmények között soha nem várhatók el, ezért soha nem számítanak rá. Például az OutOfMemoryError, StackOverflowError és a ThreadDead ilyen hibák. A módszereknek soha nem szabad kezelniük a hibákat.
Mi a különbség a kivétel és a hiba között??
Mind a hibák, mind a kivételek nemkívánatos események egy program végrehajtása során. Vannak azonban alapvető különbségek. Kivételeket a programozó számíthat előre, míg a hibát nehéz előre jelezni. A kivételek ellenőrizhetők vagy be nem jelölhetők. De a hibákat mindig nincs bejelölve. A kivételek általában a programozó által okozott hibát jelzik. A hibák rendszerhiba vagy egy erőforrás nem megfelelő használata miatt fordulnak elő. Ezért a kivételeket az alkalmazás szintjén kell kezelni, míg a hibákat a rendszer szintjén kell kezelni (csak ha lehetséges). Kivétel kezelése után garantáltan visszatér a normál programfolyamathoz. De még akkor is, ha hibát észlelünk, a programozó elsősorban nem tudja, hogyan kell kezelni. A hagyományos hibakezeléssel ellentétben a kivételek lehetővé teszik a hibakezelési kód elválasztását a normál kódtól.