logo

Обработка на изключения в Java

  1. Обработка на изключения
  2. Предимство на обработката на изключения
  3. Йерархия на класовете за изключения
  4. Видове изключения
  5. Пример за изключение
  6. Сценарии, при които може да възникне изключение

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

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

директория в linux команди

Какво е изключение в Java?

Речник Значение: Изключение е необичайно състояние.

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

Какво е обработка на изключения?

Exception Handling е механизъм за обработка на грешки по време на изпълнение, като ClassNotFoundException, IOException, SQLException, RemoteException и др.

Предимство на обработката на изключения

Основното предимство на обработката на изключения е за поддържане на нормалния поток на приложението . Изключението обикновено прекъсва нормалния поток на приложението; ето защо трябва да обработваме изключения. Нека разгледаме сценарий:

 statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10; 

Да предположим, че има 10 израза в програма на Java и изключение възниква при израз 5; останалата част от кода няма да бъде изпълнена, т.е. изрази от 6 до 10 няма да бъдат изпълнени. Въпреки това, когато извършим обработка на изключения, останалите оператори ще бъдат изпълнени. Ето защо използваме обработка на изключения Java .

Знаеш ли?
  • Каква е разликата между проверените и непроверените изключения?
  • Какво се случва зад кода int data=50/0;?
  • Защо да използвате множествен блок за улавяне?
  • Има ли някаква възможност, когато блокът finally не се изпълни?
  • Какво е разпространение на изключения?
  • Каква е разликата между ключовата дума хвърляне и хвърляния?
  • Какви са 4-те правила за използване на обработка на изключения с отмяна на метод?

Йерархия на Java Exception класове

Класът java.lang.Throwable е основният клас на йерархията на Java Exception, наследен от два подкласа: Exception и Error. Йерархията на класовете Java Exception е дадена по-долу:

йерархия на обработка на изключения

Видове Java изключения

Има основно два вида изключения: проверени и непроверени. Грешка се счита за непроверено изключение. Въпреки това, според Oracle, има три вида изключения, а именно:

  1. Отметнато изключение
  2. Неотметнато изключение
  3. Грешка
йерархия на обработка на изключения

Разлика между проверени и непроверени изключения

1) Отметнато изключение

Класовете, които директно наследяват класа Throwable, с изключение на RuntimeException и Error, са известни като проверени изключения. Например IOException, SQLException и др. Проверените изключения се проверяват по време на компилиране.

2) Непроверено изключение

Класовете, които наследяват RuntimeException, са известни като непроверени изключения. Например ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException и др. Непроверените изключения не се проверяват по време на компилиране, но се проверяват по време на изпълнение.

3) Грешка

Грешката е непоправима. Някои примери за грешки са OutOfMemoryError, VirtualMachineError, AssertionError и др.

Ключови думи за изключение на Java

Java предоставя пет ключови думи, които се използват за обработка на изключението. Следната таблица описва всеки.

Ключова думаОписание
опитвамКлючовата дума 'try' се използва за указване на блок, където трябва да поставим код за изключение. Това означава, че не можем да използваме try block самостоятелно. Блокът try трябва да бъде последван от catch или finally.
уловБлокът 'catch' се използва за обработка на изключението. Той трябва да бъде предшестван от блок try, което означава, че не можем да използваме само блок catch. Може да бъде последвано от окончателно блокиране по-късно.
накраяБлокът 'finally' се използва за изпълнение на необходимия код на програмата. Изпълнява се независимо дали е обработено изключение или не.
хвърлямКлючовата дума 'throw' се използва за генериране на изключение.
хвърляКлючовата дума 'throws' се използва за деклариране на изключения. Той уточнява, че може да възникне изключение в метода. Не прави изключение. Винаги се използва със сигнатура на метода.

Пример за обработка на изключения в Java

Нека видим пример за обработка на изключения в Java, в който използваме оператор try-catch за обработка на изключението.

JavaExceptionExample.java

 public class JavaExceptionExample{ public static void main(String args[]){ try{ //code that may raise exception int data=100/0; }catch(ArithmeticException e){System.out.println(e);} //rest code of the program System.out.println('rest of the code...'); } } 
Тествайте сега

Изход:

 Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code... 

В горния пример 100/0 предизвиква ArithmeticException, което се обработва от блок try-catch.

Често срещани сценарии на Java изключения

Дадени са някои сценарии, при които могат да възникнат непроверени изключения. Те са както следва:

1) Сценарий, при който възниква ArithmeticException

Ако разделим произволно число на нула, възниква ArithmeticException.

 int a=50/0;//ArithmeticException 

2) Сценарий, при който възниква NullPointerException

Ако имаме нулева стойност в някоя променлива , извършването на каквато и да е операция върху променливата хвърля NullPointerException.

 String s=null; System.out.println(s.length());//NullPointerException 

3) Сценарий, при който възниква NumberFormatException

Ако форматирането на която и да е променлива или число не съответства, това може да доведе до NumberFormatException. Да предположим, че имаме a низ променлива, която има знаци; преобразуването на тази променлива в цифра ще предизвика NumberFormatException.

 String s='abc'; int i=Integer.parseInt(s);//NumberFormatException 

4) Сценарий, при който възниква ArrayIndexOutOfBoundsException

Когато даден масив надвиши размера си, възниква изключение ArrayIndexOutOfBoundsException. може да има други причини за възникване на ArrayIndexOutOfBoundsException. Обмислете следните твърдения.

 int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException 

Индекс на изключения в Java

  1. Java Try-Catch Блок
  2. Java Multiple Catch Block
  3. Java вложен опит
  4. Java Finally Block
  5. Ключова дума за хвърляне на Java
  6. Разпространение на изключение на Java
  7. Java хвърля ключова дума
  8. Java Throw срещу Throws
  9. Java Final срещу Finally срещу Finalize
  10. Обработка на изключения в Java с отмяна на метода
  11. Персонализирани изключения на Java