Обработка на изключения в Java (с примери)

В урока ще научим за различни подходи за обработка на изключения в Java с помощта на примери.

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

Ето защо е важно да се справят с изключенията. Ето списък на различни подходи за обработка на изключения в Java.

  • опитайте … блок за хващане
  • накрая блокира
  • хвърля и хвърля ключова дума

1. Java опит … блок за хващане

Блокът 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 най-накрая блокира

В 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 с помощта на блок block

 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Ключовата дума Java се използва за изрично изхвърляне на едно изключение.

Когато правим throwизключение, потокът на програмата се премества от tryблока в catchблока.

Пример: Обработка на изключения с помощта на Java хвърляне

 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 хвърляне и хвърляне.

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