Začiarknuté a nezaškrtnuté výnimky v prostredí Java

1. Prehľad

Výnimky Java spadajú do dvoch hlavných kategórií: začiarknuté a nezaškrtnuté výnimky. V tomto článku poskytneme niekoľko ukážok kódu, ako ich používať.

2. Začiarknuté výnimky

Kontrolované výnimky vo všeobecnosti predstavujú chyby mimo kontroly programu. Napríklad konštruktér súboru FileInputStream hodí FileNotFoundException ak vstupný súbor neexistuje.

Java overuje skontrolované výnimky v čase kompilácie.

Preto by sme mali používať hodí kľúčové slovo na vyhlásenie kontrolovanej výnimky:

private static void checkedExceptionWithThrows () hodí FileNotFoundException {File file = new File ("not_existing_file.txt"); Stream FileInputStream = nový FileInputStream (súbor); }

Môžeme tiež použiť a Skús chytiť blok na spracovanie zaškrtnutej výnimky:

private static void checkedExceptionWith TryCatch () {File file = new File ("not_existing_file.txt"); vyskúšajte {FileInputStream stream = nový FileInputStream (súbor); } catch (FileNotFoundException e) {e.printStackTrace (); }}

Niektoré bežné kontrolované výnimky v Jave sú Výnimka IO, SQLExceptiona ParseException.

The Výnimka trieda je nadtrieda kontrolovaných výnimiek. Preto môžeme vytvoriť vlastnú kontrolovanú výnimku rozšírením Výnimka:

verejná trieda IncorrectFileNameException rozširuje výnimku {public IncorrectFileNameException (reťazec errorMessage) {super (errorMessage); }} 

3. Nezačiarknuté výnimky

Ak program hodí nezačiarknutú výnimku, odráža to chybu vo vnútri logiky programu. Napríklad, ak vydelíme číslo 0, Java hodí Aritmetická výnimka:

private static void divideByZero () {int čitateľ = 1; menovateľ int = 0; int výsledok = čitateľ / menovateľ; } 

Java v čase kompilácie neoveruje nekontrolované výnimky. Ďalej nemusíme deklarovať nekontrolované výnimky v metóde s hodí kľúčové slovo. A hoci vyššie uvedený kód nemá počas kompilácie žiadne chyby, vyhodí sa Aritmetická výnimka za behu.

Niektoré bežné nekontrolované výnimky v Jave sú NullPointerException, ArrayIndexOutOfBoundsExceptiona IllegalArgumentException.

The RuntimeException trieda je nadtriedou všetkých nekontrolovaných výnimiek. Preto môžeme vytvoriť vlastnú nekontrolovanú výnimku rozšírením RuntimeException:

public class NullOrEmptyException rozširuje RuntimeException {public NullOrEmptyException (String errorMessage) {super (errorMessage); }}

4. Kedy použiť začiarknuté a nezaškrtnuté výnimky

Je dobrým zvykom používať v Jave výnimky, aby sme mohli oddeliť kód na spracovanie chýb od bežného kódu. Musíme sa však rozhodnúť, ktorý typ výnimky hodiť. Dokumentácia Oracle Java poskytuje pokyny, kedy sa majú použiť začiarknuté a nezaškrtnuté výnimky:

„Ak sa dá rozumne očakávať, že sa klient z výnimky spamätá, urobte z nej kontrolovanú výnimku. Ak klient nemôže urobiť nič pre to, aby sa zotavil z výnimky, urobte z nej nezaškrtnutú výnimku. “

Napríklad predtým, ako otvoríme súbor, môžeme najskôr overiť názov vstupného súboru. Ak je názov vstupného súboru používateľa neplatný, môžeme vyvolať vlastnú začiarknutú výnimku:

if (! isCorrectFileName (fileName)) {throw new IncorrectFileNameException ("Nesprávny názov súboru:" + názov súboru); } 

Týmto spôsobom môžeme obnoviť systém prijatím názvu iného vstupného súboru používateľa. Ak je však názov vstupného súboru nulový ukazovateľ alebo je to prázdny reťazec, znamená to, že v kóde máme nejaké chyby. V takom prípade by sme mali hodiť nekontrolovanú výnimku:

if (fileName == null || fileName.isEmpty ()) {hodiť novú NullOrEmptyException ("Názov súboru je nulový alebo prázdny."); } 

5. Záver

V tomto článku sme diskutovali o rozdieloch medzi kontrolovanými a nekontrolovanými výnimkami. Poskytli sme tiež niekoľko príkladov kódu, ktoré ukazujú, kedy sa majú použiť začiarknuté alebo nezaškrtnuté výnimky.

Ako vždy, všetok kód nájdený v tomto článku nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found