В этом руководстве мы узнаем о различных подходах к обработке исключений в 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)
В приведенном выше примере мы явно выбрасываем ключевое слово ArithmeticExceptionusing 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.








