Porovnávacia tabuľka
Základ pre porovnanie | Chyba | výnimka |
---|---|---|
základné | Chyba je spôsobená nedostatkom systémových prostriedkov. | Výnimka je spôsobená kódom. |
zotavenie | Chyba je nedobytná. | Výnimka je obnoviteľná. |
Kľúčové slová | Nie je možné riešiť chybu programovým kódom. | Výnimky sa riešia pomocou troch kľúčových slov "skús", "chytiť" a "hodiť". |
dôsledky | Po zistení chyby sa program ukončí abnormálne. | Ako výnimka je zistená, je vyhodená a zachytená kľúčovými slovami "hod" a "chytiť". |
druhy | Chyby sú klasifikované ako nekontrolované. | Výnimky sú klasifikované ako kontrolované alebo nekontrolované. |
balíček | V jazyku Java sú chyby definované ako balík "java.lang.Error". | V jazyku Java sú definované výnimky v časti "java.lang.Exception". |
príklad | OutOfMemory, StackOverFlow. | Kontrolované výnimky: NoSuchMethod, ClassNotFound. Nevybavené výnimky: NullPointer, IndexOutOfBounds. |
Definícia chyby
Chyba je podtriedou zabudovanej triedy "Throwable". Chyby sú kritické podmienky, ktoré sa vyskytujú v dôsledku nedostatku systémových prostriedkov a nemôžu byť spracované kódom programu. Chyby nemôžu byť nijako obnovené, pretože ich nemožno vytvoriť, vyhodiť, chytiť alebo odpovedať. Chyby sú spôsobené katastrofickým zlyhaním, ktoré váš program zvyčajne nedokáže spracovať.
Chyby sú vždy nekontrolovaného typu, pretože kompilátor nemá žiadne informácie o jeho výskyte. Chyby sa vždy vyskytujú v prostredí spustenia. Chyba môže byť vysvetlená pomocou príkladu, program má chybu pretečeniu zásobníka, chybu v pamäti alebo chybu systému, táto chyba je spôsobená systémom. Kód nie je zodpovedný za takéto chyby. Dôsledkom výskytu chyby je, že program sa ukončí abnormálne.
Definícia výnimky
Výnimka je tiež podtriedou vstavanej triedy "Throwable". Výnimkou sú výnimočné podmienky, ktoré sa vyskytujú v prostredí runtime. Väčšina výnimiek je spôsobená kódom nášho programu. Avšak výnimky môžu byť spracované samotným programom, pretože výnimky sú vymáhateľné. Výnimky sa riešia pomocou troch kľúčových slov "try", "catch", "throw". Syntax zápisu výnimky je:
skúste {// napíšte svoj kód} Chyť (typ výnimky) {// napíšte kód}
Vo vyššie uvedenom kóde je kód napísaný v skúšobnom bloku kód, ktorý chcete sledovať pre výnimku. Ak sa vyskytne výnimka v skúšobnom bloku, vyhodí sa pomocou kľúčového slova "throw". Výnimku uvrhnutú môže zachytiť blok "chytiť" vyššie uvedeného kódu. "Typ výnimky" je typ výnimky, ktorá sa vyskytla.
Jednoducho povedané, môžeme povedať, že chyby, ku ktorým došlo v dôsledku nesprávneho kódu, sa nazývajú výnimky. Ak napríklad požadovaná trieda nebola nájdená žiadaná metóda. Tieto výnimky sú spôsobené kódom v programe; systém nie je zodpovedný za takéto výnimky. Výnimky sú klasifikované ako "kontrolované" a "nekontrolované". Nekontrolované výnimky nie sú v znalostiach kompilátora, keďže sa vyskytujú počas spustenia, zatiaľ čo kompilátor má vedomosti o skontrolovaných výnimkách, ktoré sú známe kompilátorovi počas kompilácie.
Kľúčové rozdiely v chybách a výnimkách
- Chyba sa vyskytuje iba vtedy, keď sú systémové prostriedky nedostatočné, zatiaľ čo výnimka je spôsobená, ak má kód nejaký problém.
- Chyba nemôže byť nikdy obnovená, zatiaľ čo výnimka môže byť obnovená príprave kódu spracovať výnimku.
- Chyba sa nikdy nedá zvládnuť, ale výnimka môže byť spracovaná kódom, ak je kód, ktorý hodí výnimku, zapísaný do skúšobného bloku.
- Ak sa vyskytla chyba, program sa ukončí abnormálne. Na druhej strane, ak dôjde k výnimke, program udeľuje výnimku a zaobchádza sa s blokom try a catch.
- Chyby sú nekontrolovaného typu, tj chyby nie sú v znalostiach kompilátorov, zatiaľ čo výnimka je klasifikovaná ako zaškrtnutá a nekontrolovaná.
- Chyby sú definované v balíku java.lang.Error, pričom výnimka je definovaná java.lang.Exception.
záver:
Výnimky sú výsledkom chýb vykonaných pri kódovaní programu a chyby sú výsledkom nesprávneho fungovania systému