Исключения Java - Попробуйте... Поймать
Исключения Java
При выполнении Java-кода могут возникать различные ошибки: ошибки кодирования, сделанные программистом, ошибки из-за неправильного ввода или другие непредвиденные вещи.
При возникновении ошибки Java обычно останавливается и генерирует сообщение об ошибке. Технический термин для этого: Java выдаст исключение (выдаст ошибку).
Java попробуй и поймай
Оператор try
позволяет определить блок кода, который будет проверяться на наличие ошибок во время его выполнения.
Оператор catch
позволяет определить блок кода, который будет выполняться, если в блоке try произойдет ошибка.
Ключевые слова try
и catch
идут парами:
Синтаксис
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
Рассмотрим следующий пример:
Это вызовет ошибку, потому что 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("Something went wrong.");
}
}
}
Вывод будет:
Something went wrong.
Ну наконец то
Оператор 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("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
Вывод будет:
Something went wrong.
The 'try catch' is finished.
Ключевое слово броска
Оператор throw
позволяет создать пользовательскую ошибку.
Оператор throw
используется вместе с типом исключения . В Java доступно множество типов исключений: ArithmeticException
,
FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
, и т.д.:
Пример
Выдать исключение, если возраст меньше 18 лет (напечатать «Отказано в доступе»). Если возраст 18 лет и старше, выведите «Доступ предоставлен»:
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...)
}
}
Вывод будет:
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)
Если бы возраст был равен 20, вы бы не получили исключения:
Пример
checkAge(20);
Вывод будет:
Access granted - You are old enough!