Java try ... catch (С примери)

В този урок ще научим за опита на catch catch в Java с помощта на примери.

В try… catchблок в Java се използва за обработка изключения и предотвратява ненормално Прекратяването на програмата.

Ето синтаксиса на try… catchблок в Java.

 try( // code ) catch(exception) ( // code )

В tryблок включва код, който може да генерира изключение.

В catchблок включва код, който се изпълнява, когато настъпва изключение вътре в tryблока.

Пример: Java try … catch block

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Изход

 ArithmeticException => / по нула

В горния пример обърнете внимание на реда,

 int divideByZero = 5 / 0;

Тук се опитваме да разделим число на нула . В този случай възниква изключение. Следователно, ние сме затворили този код вътре в tryблока.

Когато програмата срещне този код, ArithmeticExceptionвъзниква. И изключението се улавя от catchблока и изпълнява кода вътре в catchблока.

В catchблока се изпълнява само ако съществува изключение вътре в tryблока.

Забележка : В Java можем да използваме tryблок без catchблок. Не можем обаче да използваме catchблок без tryблок.

Опитайте Java … накрая блокирайте

Можем да използваме и tryблока заедно с окончателно блок.

В този случай блокът окончателно винаги се изпълнява независимо дали има изключение в блока за опит или не.

Пример: Java опит … окончателно блокиране

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; ) finally ( System.out.println("Finally block is always executed"); ) ) )

Изход

 И накрая, блокът винаги се изпълнява.

В горния пример използвахме tryблока заедно с finallyблока. Виждаме, че кодът вътре в tryблока причинява изключение.

Кодът вътре в finallyблока обаче се изпълнява независимо от изключението.

Опит на Java … хващане … накрая блокиране

В Java можем да използваме и блока final след try… catchблока. Например,

 import java.io.*; class ListOfNumbers ( // create an integer array private int() list = (5, 6, 8, 9, 2); // method to write data from array to a fila public void writeList() ( PrintWriter out = null; try ( System.out.println("Entering try statement"); // creating a new file OutputFile.txt out = new PrintWriter(new FileWriter("OutputFile.txt")); // writing values from list array to Output.txt for (int i = 0; i <7; i++) ( out.println("Value at: " + i + " = " + list(i)); ) ) catch (Exception e) ( System.out.println("Exception => " + e.getMessage()); ) finally ( // checking if PrintWriter has been opened if (out != null) ( System.out.println("Closing PrintWriter"); // close PrintWriter out.close(); ) else ( System.out.println("PrintWriter not open"); ) ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Изход

 Въвеждане на изявление за опит Изключение => Индекс 5 извън границите за дължина 5 Затваряне на PrintWriter

В горния пример създадохме масив с име списък и файл с име output.txt. Тук се опитваме да четем данни от масива и да ги съхраняваме във файла.

Забележете кода,

 for (int i = 0; i < 7; i++) ( out.println("Value at: " + i + " = " + list(i)); )

Тук размерът на масива е 5и последният елемент на масива е на list(4). Опитваме се обаче да получим достъп до елементи в a(5) и a(6).

Следователно кодът генерира изключение, което се улавя от блока catch.

Тъй като finallyблокът винаги се изпълнява, ние включихме код за затваряне на PrintWriterвътрешността на блока окончателно.

Добра практика е да използвате окончателно блок, за да включите важен код за почистване, като затваряне на файл или връзка.

Забележка : Има някои случаи, когато finallyблок не се изпълнява:

  • Използване на System.exit()метода
  • В finallyблока възниква изключение
  • Смъртта на конец

Множество блокове за улов

За всеки tryблок може да има нула или повече catchблокове. Множество catchблокове ни позволяват да обработваме всяко изключение по различен начин.

Типът аргумент на всеки catchблок указва типа изключение, който може да бъде обработен от него. Например,

 class ListOfNumbers ( public int() arr = new int(10); public void writeList() ( try ( arr(10) = 11; ) catch (NumberFormatException e1) ( System.out.println("NumberFormatException => " + e1.getMessage()); ) catch (IndexOutOfBoundsException e2) ( System.out.println("IndexOutOfBoundsException => " + e2.getMessage()); ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Изход

 IndexOutOfBoundsException => Индекс 10 извън границите за дължина 10

В този пример създадохме цяло число масив с име 10arr с размер .

Тъй като индексът на масива започва от 0 , последният елемент на масива е в arr(9). Забележете изявлението,

 arr(10) = 11;

Тук се опитваме да присвоим стойност на индекс 10 . Следователно, IndexOutOfBoundExceptionнастъпва.

Когато възникне изключение в tryблока,

  • The exception is thrown to the first catch block. The first catch block does not handle an IndexOutOfBoundsException, so it is passed to the next catch block.
  • The second catch block in the above example is the appropriate exception handler because it handles an IndexOutOfBoundsException. Hence, it is executed.

Catching Multiple Exceptions

From Java SE 7 and later, we can now catch more than one type of exception with one catch block.

This reduces code duplication and increases code simplicity and efficiency.

Each exception type that can be handled by the catch block is separated using a vertical bar |.

Its syntax is:

 try ( // code ) catch (ExceptionType1 | Exceptiontype2 ex) ( // catch block )

To learn more, visit Java catching multiple exceptions.

Java try-with-resources statement

В опит-с-ресурси твърдението е изявление пробвам, която има една или повече декларации ресурси.

Синтаксисът му е:

 try (resource declaration) ( // use of the resource ) catch (ExceptionType e1) ( // catch block )

Ресурсът е обект, който трябва да бъде затворен в края на програмата. Той трябва да бъде деклариран и инициализиран в оператора try.

Да вземем пример.

 try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) ( // use of the resource )

В опит-с-ресурси изявлението също така се нарича автоматично управление на ресурсите . Това изявление автоматично затваря всички ресурси в края на изявлението.

За да научите повече, посетете изявлението java try-with-resources.

Интересни статии...