Syntax:
Syntaxe try-catch-konečne blok je uveden níže.
Snaž seprohlášení 1… N
catch (ExceptiontType var)
prohlášení 1… N
Konečně
prohlášení 1… N
Zde, pokud dojde k výjimce v rámci bloku try, bude výjimka vyvolána do bloku catch a konečný blok je zde volitelný. Kód bloku nakonec provede, zda dojde k výjimce nebo ne.
Příklad 1: Zpracování výjimek s jedním blokem zachycení
Následující příklad ukazuje použití zpracování výjimek pomocí jednoho bloku zachycení. Název souboru bude považován za vstup a vytvoří objekt BufferedReader k otevření souboru pro čtení. Pokud název souboru existuje, bude obsah souboru čten řádek po řádku a vytištěn. Pokud soubor neexistuje, vygeneruje se výjimka a vytiskne se chybová zpráva.
importovat java.io.BufferedReader;importovat java.io.FileReader;
importovat java.io.IOException;
importovat java.util.Skener;
veřejná třída kromě1
public static void main (String [] args)
// Vytvořte objekt skeneru
Vstup skeneru = nový skener (systém.v);
Systém.ven.print ("Zadejte název souboru:");
// Převzetí dat řetězce od uživatele
Řetězec Název souboru = v.další();
Snaž se
// Vytvoří objekt čtečky
Čtečka BufferedReader = nový BufferedReader (nový FileReader (FileName));
// Přečíst první řádek, pokud soubor existuje
Řetězec = čtečka.readLine ();
while (řádek != null)
// Vytiskne řádek
Systém.ven.println (řádek);
// Přečtěte si další řádek
linka = čtenář.readLine ();
// Zavřete objekt čtečky
čtenář.zavřít();
// Zavřete objekt skeneru
v.zavřít();
chytit (IOException e)
// Vytiskněte chybovou zprávu
Systém.ven.println ("Soubor neexistuje");
Výstup:
V následujícím výstupu, 'Ahoj.txt ' je uveden jako název souboru, který neexistuje. Vytiskne se tedy následující zpráva.
Příště, soubor1.txt je uveden jako název souboru, který existuje, a výstup ukazuje obsah souboru.
Příklad 2: Zpracování výjimek s blokem více úlovků
Jak můžete použít více bloků úlovku ke zpracování více výjimek, je uveden v následujícím příkladu. Zde jsou deklarovány tři bloky úlovků. První blok zachycení zachytí aritmetickou chybu, když je provedena jakákoli nelogická aritmetická operace. Druhý záchytný bod zachytí chybu mimo rozsah pole, když se pokusí číst hodnotu indexu pole, která neexistuje. Třetí blok zachycení zachytí chybu číselné hodnoty, když je jako hodnota pole zadán jakýkoli znak nebo hodnota řetězce. V kódu je deklarováno pole se čtyřmi indexy a inicializováno celočíselnými hodnotami, které budou převzaty od uživatele. Hodnoty pole se tisknou pomocí smyčky. Operace dělení se provádí na konci bloku try.
importovat java.util.Skener;veřejná třída kromě2
public static void main (String [] args)
Snaž se
// Deklaruje číselné pole
int num_arr [] = nový int [4];
// Vytvořte objekt skeneru
Vstup skeneru = nový skener (systém.v);
Systém.ven.println ("Zadejte čtyři čísla:");
// Opakujte smyčku čtyřikrát
pro (int i = 0; i < 4; i++)
// Zadejte číslo
int n = v.nextInt ();
// Přiřadí hodnotu poli
num_arr [i] = n;
Systém.ven.println ("Hodnoty pole jsou:");
// Opakujte smyčku pětkrát
pro (int i = 0; i < 4; i++)
// Vytiskne hodnoty pole
Systém.ven.println (num_arr [i]);
// Rozdělte a vytiskněte hodnotu
int num = 50/0;
Systém.ven.tisk (počet);
// Zavřete objekt skeneru
v.zavřít();
catch (ArithmeticException e)
Systém.ven.println ("Žádné číslo není dělitelné 0");
catch (ArrayIndexOutOfBoundsException e)
Systém.ven.println ("Došlo k hodnotě indexu mimo pole");
úlovek (výjimka e)
Systém.ven.println ("Hodnota čísla není uvedena");
Výstup:
Následující výstup ukazuje, že hodnoty pole jsou vloženy a vytištěny správně, ale třetí blok zachycení je proveden, protože 50 je vyděleno 0, což je chyba.
Program se provede podruhé. Když je hodnota řetězce zadána jako hodnota pole, je vygenerována druhá výjimka a je proveden příkaz druhého bloku catch.
Příklad 3: Zpracování výjimek pomocí bloku try-catch-konečne
V následujícím příkladu je ukázáno použití konečně bloku s blokem try-catch. Kód nakonec bloku se spustí, pokud dojde k výjimce nebo ne. V kódu bude celočíselná hodnota převzata od uživatele. Pokud uživatel zadá libovolnou hodnotu řetězce, pak InputMismatchException
vygeneruje a vytiskne zprávu z bloku catch. Objekt skeneru bude uzavřen v Konečně blok, pokud se výjimka generuje nebo ne.
importovat java.util.Skener;importovat java.util.InputMismatchException;
veřejná třída kromě3
public static void main (String [] args)
// Vytvořte objekt skeneru
Vstup skeneru = nový skener (systém.v);
Systém.ven.tisk ("Zadejte číslo:");
Snaž se
// Převzetí dat řetězce od uživatele
int číslo = v.nextInt ();
// Vytiskněte číslo
Systém.ven.println ("Hodnota čísla =" + číslo);
catch (InputMismatchException e)
// Chybová zpráva tisku
Systém.ven.println ("Hodnota řetězce není akceptována.");
Konečně
// Zavřete objekt skeneru
v.zavřít();
Systém.ven.println ("Ukončeno z programu");
Výstup:
78 je uveden jako vstupní hodnota v následujícím výstupu po provedení kódu. Zde tedy není generována žádná výjimka. Zpráva z bloku finally se vytiskne později.
další, Ahoj je zadán jako vstup po provedení kódu, který je řetězcem. Generuje se tedy výjimka a vytiskne se chybová zpráva z bloku catch. Zpráva z bloku finally se vytiskne později.
Závěr:
Zpracování výjimek je velmi důležitá a užitečná vlastnost jakéhokoli programovacího jazyka, kterou lze použít ke skrytí skutečné chybové zprávy před uživatelem a poskytnutí chybové zprávy čitelné pro člověka, aby uživateli správně porozuměl. Tento kurz pomáhá uživateli naučit se různé způsoby použití zpracování výjimek v Javě a přizpůsobit jejich kód vhodnějším způsobem.