Java Винятки - Try...Catch
Java Винятки
Під час виконання коду Java можуть виникнути різні помилки: помилки кодування, зроблені програмістом, помилки через неправильне введення чи інші непередбачені речі.
Якщо виникає помилка, Java зазвичай зупиняється та генерує повідомлення про помилку. Технічний термін для цього такий: Java викличе виключення (викине помилку).
Java try
та catch
Інструкція try
дозволяє визначити блок коду, який потрібно перевірити на помилки під час його виконання.
Інструкція catch
дозволяє визначити блок коду, який буде виконано, якщо в блоці try станеться помилка.
Ключові слова try
та catch
бувають парами:
Синтаксис
try {
// Блок коду для спроби
}
catch(Виняток e) {
// Блок коду для обробки помилок
}
Розглянемо наступний приклад:
Це призведе до помилки, оскільки myNumbers[10] не існує.
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
Вихід буде приблизно таким:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
Якщо сталася помилка, ми можемо використати try...catch
, щоб виявити помилку та виконати певний код для її обробки:
Приклад
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("Щось пішло не так.");
}
}
}
Вихід буде:
Щось пішло не так.
Finally (Фінал)
Інструкція finally
дозволяє виконувати код після try...catch
, незалежно від результату:
Приклад
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("Щось пішло не так.");
} finally {
System.out.println(" 'try catch' завершено.");
}
}
}
Вихід буде:
Щось пішло не так.
'try catch' завершено.
Ключове слово throw
Інструкція throw
дозволяє створити спеціальну помилку.
Інструкція throw
використовується разом із типом винятку. У Java доступно багато типів винятків: ArithmeticException
, FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
тощо:
Приклад
Створити виняток, якщо вік менше 18 (надрукувати "Доступ заборонено"). Якщо вам виповнилося 18 років, надрукувати "Доступ надано":
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Доступ заборонено - Вам повинно бути не менше 18 років.");
}
else {
System.out.println("Доступ надано - ви достатньо дорослі!");
}
}
public static void main(String[] args) {
checkAge(15); // Встановіть вік 15 (що менше 18...)
}
}
Вихід буде:
Exception in thread "main" java.lang.ArithmeticException: У доступі відмовлено - вам має бути не менше 18 років.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
Якби вік становив 20 років, ви не отримали б виключення: