Különbség a kivétel és a hiba között

Különbség a kivétel és a hiba között
Különbség a kivétel és a hiba között

Videó: Különbség a kivétel és a hiba között

Videó: Különbség a kivétel és a hiba között
Videó: NAT közérthetően - Hálózati címfordítás 2024, November
Anonim

Kivétel vs hiba

A program futása közben váratlan viselkedés lép fel. Ennek oka lehet kivételek vagy hibák. Ez alól kivételt képeznek az események, amelyek megzavarhatják a normál műsorfolyamot. A hibák olyan állapotok, amelyek helyrehozhatatlannak tekinthetők. A kivételek többnyire magához az alkalmazáshoz kapcsolódnak, míg a hibák ahhoz a rendszerhez kapcsolódnak, amelyen a program fut.

Mi a kivétel?

A kivétel olyan esemény, amely megzavarhatja a normál programfolyamatot. 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. A kivételobjektum azzal a módszerrel jön létre, amelyben a kivétel előfordult. A kivételobjektum 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ételobjektumot, megpróbál keresni valakit, aki kezelni tudja azt a hívási veremben úgy, hogy fordított sorrendben (a metódusok meghívásának megfelelően) bejárja. A hívásverem azoknak a metódusoknak a rendezett listája, amelyeket a kivétel előfordulása előtt hívtak meg. 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 (azaz a kivétel típusa megegyezik a kezelhető típussal), akkor á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 class”-ból öröklődnek. A NullPointerException és az ArrayIndexOutOfBoundsException két gyakori kivétel a Java-ban.

Mi az a hiba?

A hiba olyan állapot, amely helyrehozhatatlannak tekinthető, például ha a program a rendelkezésre állónál nagyobb memóriát igényel. Ezeket a hibákat futás közben nem lehet kezelni. Ha hiba történik, a program leáll. Java-ban a hibák a Throwable osztályból öröklődnek. A hibák általában súlyos problémákat jelentenek, amelyeket a programozónak (vagy az alkalmazásnak) nem szabad megpróbálnia elkapnia. A hibák egyszerűen abnormális állapotok, amelyek normális körülmények között soha nem várhatóak, ezért soha nem láthatók előre. Például az OutOfMemoryError, a StackOverflowError és a ThreadDead ilyen hibák. A metódusoknak soha nem lehetnek hibakezelők.

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 előfordulások egy program végrehajtása során. Vannak azonban alapvető különbségek. A kivételeket a programozó előre láthatja, míg a hibát nehéz előre látni. A kivételek bejelölhetők vagy törölhetők. De a hibákat mindig nem ellenőrizzük. A kivételek általában a programozó által okozott hibára utalnak. A hibák azonban rendszerhiba vagy egy erőforrás nem megfelelő felhasználása miatt fordulnak elő. Ezért a kivételeket az alkalmazás szintjén kell kezelni, míg a hibákat rendszerszinten (csak ha lehetséges). Egy kivétel kezelése után garantáltan visszatér a normál programfolyamathoz. De még ha el is kapnak egy hibát, a programozó először nem tudja, hogyan kezelje azt. A hagyományos hibakezeléstől eltérően a kivételek lehetővé teszik a hibakezelő kód és a normál kód elkülönítését.

Ajánlott: