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

Anonim

Kivétel és hiba

A váratlan viselkedés a program futásakor jelentkezik. Ez lehet kivétel vagy hiba miatt. Kivételek olyan események, amelyek zavarhatják a normál programáramlást. A hibák azok a feltételek, amelyek visszafordíthatatlannak tekinthetők. A kivételek leginkább az alkalmazással kapcsolatosak, a hibák pedig kapcsolódnak a rendszerhez, amelyen a program fut.

Mi a kivétel?

Kivétel egy olyan esemény, amely zavarhatja a normál programáramlást. A név kivétel a "kivételes esemény" -ből származik. A kivétel kivételével a kivétel objektum létrehozásának folyamata és a futásidejű rendszer felé történő átadása. A kivétel objektumot az a módszer hozza létre, amelyben a kivétel történt. Az Exception 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étel objektumot, megpróbálja megtalálni valakit, aki a híváscsomagon belül kezeli, fordított sorrendben (amelyben a módszereket hívták). A híváscsomag a módszerek rendezett listája, amelyeket a kivétel előtti eljárás előtt hívtak. A futásidejű rendszer sikeres, ha egy módszert talál egy kivételkezelővel. Az eltéréskezelő egy kódblokk, amely hivatalosan is kezelheti az említett kivételt. Ha a futásidejű rendszer megtalálja a megfelelő kezelőt (azaz a kivétel típusa megfelel a kezelendő típusnak), akkor a kivétel objektumot átadja a kezelőnek. Ezt hívják a kivételnek. Ha azonban a kivétel nem kezelhető, a program megszűnik. Java-ban a kivételek örökölnek a "Throwable class" -ból. "A NullPointerException és az ArrayIndexOutOfBoundsException két közös kivétel a Java-ban.

Mi a hiba?

A hiba olyan állapot, amely behajthatatlannak tekinthető, például olyan program, amelynél a rendelkezésre álló memória nagyobb mennyiségű. Ezek a hibák nem kezelhetők futásidő alatt. Hiba esetén a program leáll. A Java-ban a hibák örökölnek a Throwable osztályból. A hibák általában súlyos problémákat okoznak, amelyeket a programozó (vagy az alkalmazás) nem akart elkapni. A hibák egyszerűen abnormális állapotok, amelyek normál körülmények között soha nem várható fel, ezért soha nem várható. Például az OutOfMemoryError, a StackOverflowError és a ThreadDead ilyen hibák. A módszereknek soha ne legyenek hibakeresők.

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

Mind a hibák, mind a kivételek a program végrehajtása során nemkívánatos események. Azonban vannak kulcsfontosságú különbségek. Kivételeket a programozó elképzelhet, míg a hibát nehéz előre jelezni.Kivételek ellenőrizhetők vagy kikapcsolhatók. De a hibák mindig nincsenek ellenőrizve. A kivételek általában a programozó által okozott hibát jelzik. A hibák azonban rendszerhiba vagy egy forrás helytelen használata miatt következnek be. Ezért a kivételeket az alkalmazás szintjén kell kezelni, a hibákat pedig rendszer szinten kell kezelni (csak akkor, ha lehetséges). A kivétel kezelése után garantáltan visszatér a normál programfolyamathoz. De még akkor is, ha hibát kap, a programozó nem tudja, hogyan kell kezelni. A hagyományos hibaelhárítással ellentétben a kivételek lehetővé teszik a hibakezelési kód elválasztását a szabályos kódtól.