Java Exceptions - Try...Catch
Výjimky Java
Při provádění kódu Java se mohou vyskytnout různé chyby: chyby kódování způsobené programátorem, chyby způsobené nesprávným zadáním nebo jiné nepředvídatelné věci.
Když dojde k chybě, Java se normálně zastaví a vygeneruje chybovou zprávu. Technický termín pro to je: Java vyvolá výjimku (vyhodí chybu).
Java zkuste a chytněte
Příkaz try
vám umožňuje definovat blok kódu, který má být testován na chyby během jeho provádění.
Příkaz catch
vám umožňuje definovat blok kódu, který se má provést, pokud v bloku try dojde k chybě.
Klíčová slova try
a catch
jsou ve dvojicích:
Syntax
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
Zvažte následující příklad:
To vygeneruje chybu, protože myNumbers[10] neexistuje.
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
Výstup bude něco takového:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
Pokud dojde k chybě, můžeme ji try...catch
zachytit a spustit nějaký kód, který ji zpracuje:
Příklad
public class Main {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
Výstupem bude:
Something went wrong.
Konečně
Příkaz finally
vám umožňuje spustit kód po try...catch
, bez ohledu na výsledek:
Příklad
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
Výstupem bude:
Something went wrong.
The 'try catch' is finished.
Klíčové slovo hod
Příkaz throw
umožňuje vytvořit vlastní chybu.
Příkaz throw
se používá společně s typem výjimky . V Javě je k dispozici mnoho typů výjimek: ArithmeticException
,
FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
atd.:
Příklad
Vyhoďte výjimku, pokud je věk nižší než 18 (vytiskněte "Přístup odepřen"). Pokud je vám 18 nebo více let, vytiskněte „Přístup udělen“:
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
Výstupem bude:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
Pokud by vám bylo 20 let , nedostali byste výjimku:
Příklad
checkAge(20);
Výstupem bude:
Access granted - You are old enough!