В этом руководстве мы узнаем о различных подходах к обработке исключений в 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 => / нулем
В этом примере мы пытаемся разделить число на 0
. Здесь этот код генерирует исключение.
Чтобы обработать исключение, мы поместили код 5 / 0
внутри try
блока. Теперь при возникновении исключения остальная часть кода внутри try
блока пропускается.
catch
Блок ловит исключение и утверждение внутри блока улова выполняются.
Если ни один из операторов в try
блоке не генерирует исключение, catch
блок пропускается.
2. Блок Java finally
В 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 => / по нулю Это последний блок
В приведенном выше примере мы делим число на 0 внутри try
блока. Здесь этот код генерирует файл ArithmeticException
.
Исключение улавливается catch
блоком. И затем finally
блок выполняется.
Примечание . Использование finally
блока является хорошей практикой . Это потому, что он может включать важные коды очистки, такие как,
- код, который может быть случайно пропущен при возврате, продолжении или прерывании
- закрытие файла или соединения
3. Java throw and throws ключевое слово
throw
Ключевое слово Java используется для явного создания единственного исключения.
Когда мы делаем 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(); ) )
Вывод
Исключение в потоке «main» java.lang.ArithmeticException: попытка разделить на 0 в Main.divideByZero (Main.java:5) в Main.main (Main.java:9)
В приведенном выше примере мы явно выбрасываем ключевое слово ArithmeticException
using 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 (система не может найти указанный файл)
Когда мы запускаем эту программу, если файл test.txt не существует, FileInputStream
выдает a, FileNotFoundException
расширяющий IOException
класс.
findFile()
Метод определяет , что IOException
может быть выброшен. main()
Метод вызывает этот метод и обрабатывает исключение , если она брошена.
Если метод не обрабатывает исключения, в предложении должен быть указан тип исключений, которые могут возникать в нем throws
.
Чтобы узнать больше, посетите Java throw and throws.