Wyjątki Java — spróbuj... Przechwyć
Wyjątki Java
Podczas wykonywania kodu Java mogą wystąpić różne błędy: błędy w kodowaniu popełnione przez programistę, błędy spowodowane nieprawidłowymi danymi wejściowymi lub inne nieprzewidywalne rzeczy.
Gdy wystąpi błąd, Java zwykle zatrzymuje się i generuje komunikat o błędzie. Terminem technicznym na to jest: Java zgłosi wyjątek (zgłosi błąd).
Java spróbuj i złap
Instrukcja try
umożliwia zdefiniowanie bloku kodu, który ma być testowany pod kątem błędów podczas jego wykonywania.
Instrukcja catch
umożliwia zdefiniowanie bloku kodu, który ma zostać wykonany, jeśli wystąpi błąd w bloku try.
Słowa kluczowe i występują try
w catch
parach:
Składnia
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
Rozważmy następujący przykład:
Spowoduje to wygenerowanie błędu, ponieważ myNumbers[10] nie istnieje.
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
Wynik będzie wyglądał mniej więcej tak:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
Jeśli wystąpi błąd, możemy użyć try...catch
do przechwycenia błędu i wykonania kodu, który go obsłuży:
Przykład
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.");
}
}
}
Wynikiem będą:
Something went wrong.
Wreszcie
Instrukcja finally
umożliwia wykonanie kodu po try...catch
, niezależnie od wyniku:
Przykład
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.");
}
}
}
Wynikiem będą:
Something went wrong.
The 'try catch' is finished.
Słowo kluczowe rzut
Oświadczenie throw
pozwala na stworzenie niestandardowego błędu.
Instrukcja throw
jest używana razem z typem wyjątku . W Javie dostępnych jest wiele typów wyjątków: ArithmeticException
,
FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
, itd.:
Przykład
Zrzuć wyjątek, jeśli masz mniej niż 18 lat (drukuj „Odmowa dostępu”). Jeśli masz ukończone 18 lat, wydrukuj „Przyznano dostęp”:
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...)
}
}
Wynikiem będą:
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)
Jeśli miałbyś 20 lat , nie miałbyś wyjątku:
Przykład
checkAge(20);
Wynikiem będą:
Access granted - You are old enough!