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








