Rozdiel medzi výnimkou a chybou

Rozdiel medzi výnimkou a chybou
Rozdiel medzi výnimkou a chybou

Video: Rozdiel medzi výnimkou a chybou

Video: Rozdiel medzi výnimkou a chybou
Video: NAT Explained - Network Address Translation 2024, November
Anonim

Výnimka vs chyba

Keď je program spustený, môže dôjsť k neočakávanému správaniu. Môže to byť spôsobené výnimkami alebo chybami. Výnimkou sú udalosti, ktoré môžu narušiť normálny priebeh programu. Chyby sú stavy, ktoré možno považovať za nenapraviteľné. Výnimky sa väčšinou týkajú samotnej aplikácie, zatiaľ čo chyby súvisia so systémom, na ktorom program beží.

Čo je výnimka?

Výnimka je udalosť, ktorá môže narušiť normálny priebeh programu. Názov výnimka pochádza z „výnimočnej udalosti“. Vyvolanie výnimky je proces vytvorenia objektu výnimky a jej odovzdania runtime systému. Objekt výnimky je vytvorený metódou, v ktorej sa výnimka vyskytla. Objekt výnimky obsahuje užitočné informácie, ako je typ a popis výnimky. Keď runtime systém prijme objekt výnimky, pokúsi sa nájsť niekoho, kto by ho spracoval v zásobníku hovorov tak, že ho prejde v opačnom poradí (v akom boli volané metódy). Zásobník volaní je usporiadaný zoznam metód, ktoré boli volané pred metódou, v ktorej sa vyskytla výnimka. Runtime systém je úspešný, ak nájde metódu s obsluhou výnimiek. Obsluha výnimky je blok kódu, ktorý môže oficiálne spracovať uvedenú výnimku. Ak runtime systém nájde vhodný obslužný program (t. j. typ výnimky sa zhoduje s typom, ktorý možno spracovať), odovzdá objekt výnimky obsluhe. Toto sa nazýva chytanie výnimky. Ak sa však výnimka nedá spracovať, program sa ukončí. V jazyku Java sa výnimky dedia z triedy „Throwable“. NullPointerException a ArrayIndexOutOfBoundsException sú dve bežné výnimky v jazyku Java.

Čo je chyba?

Chyba je stav, ktorý možno považovať za neopraviteľný, ako napríklad program, ktorý si vyžaduje väčšie množstvo pamäte, ako je dostupné. Tieto chyby nie je možné spracovať za behu. Ak sa vyskytne chyba, program sa ukončí. V Jave sa chyby dedia z triedy Throwable. Chyby zvyčajne znamenajú vážne problémy, ktoré by sa programátor (alebo aplikácia) nemal snažiť zachytiť. Chyby sú jednoducho abnormálne stavy, ktoré sa za normálnych okolností nikdy neočakávajú, a preto sa nikdy nepredvídajú. Takýmito chybami sú napríklad OutOfMemoryError, StackOverflowError a ThreadDead. Metódy by nikdy nemali mať obslužné nástroje pre chyby.

Aký je rozdiel medzi výnimkou a chybou?

Chyby aj výnimky sú neželaným výskytom počas vykonávania programu. Majú však zásadné rozdiely. Výnimky môže predvídať programátor, zatiaľ čo chyba je ťažko predvídateľná. Výnimky je možné zaškrtnúť alebo zrušiť. Ale chyby sú vždy nekontrolované. Výnimky zvyčajne označujú chybu spôsobenú programátorom. Chyby sa však vyskytujú v dôsledku systémovej chyby alebo nesprávneho použitia zdroja. Výnimky by sa preto mali riešiť na úrovni aplikácie, zatiaľ čo chyby by sa mali riešiť na úrovni systému (iba ak je to možné). Po spracovaní výnimky máte zaručený návrat k normálnemu toku programu. Ale aj keď sa chyba zachytí, programátor nemusí vedieť, ako s ňou zaobchádzať. Na rozdiel od tradičného spracovania chýb umožňujú výnimky oddeliť kód na spracovanie chýb od bežného kódu.

Odporúča: