Обработка исключений 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