Обработка исключений Java
Обработка исключений Java
В этом руководстве мы узнаем о различных подходах к обработке исключений в Java на примерах.
В предыдущем уроке мы узнали об исключениях Java. Мы знаем, что исключения аварийно прерывают выполнение программы.
Вот почему важно обрабатывать исключения. Вот список различных подходов к обработке исключений в Java.
- попробовать...перехватить блок
- окончательно заблокировать
- throw и throws ключевое слово
1. Java блок try...catch
Блок try-catch используется для обработки исключений в Java. Вот синтаксис try...catch блокировать:
try {
// code
}
catch(Exception e) {
// code
} Здесь мы поместили код, который может генерировать исключение, внутри try блокировать. Каждые try за блоком следует catch блокировать.
Когда возникает исключение, оно перехватывается catch блокировать. catch блок нельзя использовать без try блокировать.
Пример:обработка исключений с помощью try...catch
class Main {
public static void main(String[] args) {
try {
// code that generate exception
int divideByZero = 5 / 0;
System.out.println("Rest of code in try block");
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
}
} Вывод
ArithmeticException => / by zero
В примере мы пытаемся разделить число на 0 . Здесь этот код генерирует исключение.
Для обработки исключения мы добавили код 5 / 0 внутри try блокировать. Теперь при возникновении исключения остальная часть кода внутри try блок пропущен.
catch блок перехватывает исключение, и операторы внутри блока перехвата выполняются.
Если ни один из операторов в try генерирует исключение, catch блок пропущен.
2. Java окончательно заблокировать
В Java finally блок всегда выполняется независимо от того, есть исключение или нет.
finally блок необязателен. И для каждого try блок, может быть только один finally блокировать.
Основной синтаксис finally блок:
try {
//code
}
catch (ExceptionType1 e1) {
// catch block
}
finally {
// finally block always executes
} Если возникает исключение, finally блок выполняется после try...catch блокировать. В противном случае он выполняется после блока try. Для каждого try блок, может быть только один finally блокировать.
Пример:обработка исключений Java с помощью блока finally
class Main {
public static void main(String[] args) {
try {
// code that generates exception
int divideByZero = 5 / 0;
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
finally {
System.out.println("This is the finally block");
}
}
} Вывод
ArithmeticException => / by zero This is the finally block
В приведенном выше примере мы делим число на 0. внутри try блокировать. Здесь этот код генерирует ArithmeticException .
Исключение перехватывается кодом catch блокировать. А затем finally блок выполняется.
Примечание :рекомендуется использовать finally блокировать. Это потому, что он может включать важные коды очистки, такие как
- код, который может быть случайно пропущен при возврате, продолжении или прерывании
- закрытие файла или соединения
3. Java throw и ключевое слово throws
Java throw ключевое слово используется для явного создания одного исключения.
Когда мы throw исключение, поток программы перемещается из try блокировать на catch блокировать.
Пример:обработка исключений с помощью Java throw
class Main {
public static void divideByZero() {
// throw an exception
throw new ArithmeticException("Trying to divide by 0");
}
public static void main(String[] args) {
divideByZero();
}
} Вывод
Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
at Main.divideByZero(Main.java:5)
at Main.main(Main.java:9) В приведенном выше примере мы явно бросаем ArithmeticException используя throw ключевое слово.
Точно так же throws ключевое слово используется для объявления типа исключений, которые могут возникнуть в методе. Он используется в объявлении метода.
Пример:Java выбрасывает ключевое слово
import java.io.*;
class Main {
// declareing the type of exception
public static void findFile() throws IOException {
// code that may generate IOException
File newFile = new File("test.txt");
FileInputStream stream = new FileInputStream(newFile);
}
public static void main(String[] args) {
try {
findFile();
}
catch (IOException e) {
System.out.println(e);
}
}
} Вывод
java.io.FileNotFoundException: test.txt (The system cannot find the file specified)
Когда мы запускаем эту программу, если файл test.txt не существует, FileInputStream выдает FileNotFoundException который расширяет IOException класс.
findFile() указывает, что IOException можно кинуть. main() метод вызывает этот метод и обрабатывает исключение, если оно возникло.
Если метод не обрабатывает исключения, тип исключений, которые могут возникнуть в нем, должен быть указан в теге throws. пункт.
Чтобы узнать больше, посетите раздел Java throw и throws.
java