Опитайте Catch в Java: Пример за обработка на изключения

Съдържание:

Anonim

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

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

В този урок ще научите -

  • Какво е изключение?
  • Защо се нуждаем от изключение?
  • Как да се справя с изключението
  • Опитайте Catch Block
  • Йерархия на класа на Java Exception
  • Java Най-накрая Блок

Има два вида грешки:

  1. Компилирайте грешки във времето
  2. Грешки по време на изпълнение

Грешките по време на компилиране могат отново да бъдат класифицирани отново в два типа:

  • Синтаксични грешки
  • Семантични грешки

Пример за синтаксични грешки:

Вместо да декларира

int a;погрешно сте го декларирали за това in a;кой компилатор ще изведе грешка.

Пример: Декларирали сте променлива

int a;и след няколко реда код отново декларирате цяло число като int a;. Всички тези грешки се подчертават, когато компилирате кода.

Пример за грешки при изпълнение

Грешка по време на изпълнение се нарича грешка при изключения . Всяко събитие прекъсва нормалния поток на изпълнение на програмата.

Пример за изключения са, аритметично изключение, изключение Nullpointer, Разделяне на нула изключение и т.н.

Изключенията в Java са нещо, което е извън контрола на разработчиците.

Щракнете тук, ако видеоклипът не е достъпен

Защо се нуждаем от изключение?

Да предположим, че сте кодирали програма за достъп до сървъра. Нещата работиха добре, докато разработвате кода.

По време на действителното изпълнение, сървърът не работи. Когато вашата програма се опита да осъществи достъп до нея, се повдига изключение.

Как да се справя с изключението

Досега видяхме, изключението е извън контрола на разработчика. Но обвиняването на неуспеха на вашия код в екологични проблеми не е решение. Имате нужда от стабилно програмиране, което се грижи за изключителни ситуации. Такъв код е известен като манипулатор на изключения.

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

За да приложите това, въведете кода си, за да се свържете със сървъра (Използвайки традиционните условия if и else).

Ще проверите дали сървърът не работи. Ако да, напишете кода, за да се свържете със сървъра за архивиране.

Такава организация на кода, като се използва цикъл "if" и "else" не е ефективна, когато вашият код има много Java изключения за обработка.

class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}

Опитайте Catch Block

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

  1. Нормалният код влиза в TRY блок.
  2. Кодът за обработка на изключения влиза в блока CATCH

В нашия пример TRY блокът ще съдържа кода за свързване със сървъра. Блокът CATCH ще съдържа кода за свързване към сървъра за архивиране.

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

И така, по този начин се обработва изключението в Java.

Синтаксис за използване на try & catch

try{statement(s)}catch (exceptiontype name){statement(s)}

Пример

Стъпка 1) Копирайте следния код в редактор

class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}

Стъпка 2) Запазете файла и компилирайте кода. Стартирайте програмата с помощта на командата java JavaException

Стъпка 3) Аритметично изключение - разделянето на нула е показано, както е показано по-долу за ред # 5 и ред # 6 никога не се изпълнява

Стъпка 4) Сега нека видим как да опитаме и уловим ще ни помогне да се справим с това изключение. Ще поставим изключението, причиняващо реда на кода, в блок try , последван от блок catch . Копирайте следния код в редактора.

class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}

Стъпка 5) Запазете, компилирайте и стартирайте кода. Ще получите следния изход

Както забелязвате, изключението се обработва и последният ред код също се изпълнява. Също така, имайте предвид, че линия # 7 няма да бъде изпълнена, защото веднага щом се повдигне изключение, потокът от контрол скача към блока за хващане.

Забележка: Обектът AritmeticException "e" носи информация за възникналото изключение, което може да бъде полезно при предприемане на действия за възстановяване.

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

След изпълнението на един оператор catch, другите се заобикалят и изпълнението продължава след блока try / catch. Вложените блокове за хващане следват йерархията на изключенията.
  • Всички класове изключения в Java разширяват класа 'Хвърлимо'. Throwable има два подкласа, Грешка и Изключение
  • Класът грешка дефинира изключението или проблемите, които не се очаква да възникнат при нормални обстоятелства от нашата програма, пример грешка в паметта, грешка в хардуера, грешка в JVM и т.н.
  • Класът на изключенията представлява изключенията, които могат да бъдат обработвани от нашата програма, и нашата програма може да бъде възстановена от това изключение с помощта на try and catch block
  • Изключение по време на изпълнение е подклас на класа на изключенията. Изключението от този тип представлява изключение, което възниква по време на изпълнение и което не може да бъде проследено по време на компилация. Отличен пример за същото е деление на нула изключение или изключение нулев указател и т.н.
  • IO изключение се генерира по време на операции по въвеждане и извеждане
  • Прекъснатите изключения в Java се генерират по време на множество нишки.
Пример: За да разберете влагането на блокове за опит и улавяне

Стъпка 1) Копирайте следния код в редактор.

class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}

Стъпка 2) Запазете файла и компилирайте кода. Стартирайте програмата с помощта на командата java JavaException .

Стъпка 3) Генерира се ArrayIndexOutOfBoundsException. Променете стойността на int d на 0. Запазете, компилирайте и стартирайте кода.

Стъпка 4 ) Трябва да се генерира ArithmeticException.

Стъпка 5) Коментирайте ред # 10 до ред # 12. Запазете, компилирайте и стартирайте кода.

Стъпка 6) Грешка при компилация? Това е така, защото Exception е основният клас на ArithmeticException Exception. Всяко изключение, което е повдигнато от ArithmeticException, може да се обработва и от клас Exception.Така че блокът catch на ArithmeticException никога няма да получи шанс да бъде изпълнен, което го прави излишен. Оттук и грешката при компилацията.

Java Най-накрая Блок

Блокът final се изпълнява, независимо от изключението, повдигнато в блока try. Не е задължително да се използва с блок за опити.

 try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}

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

Пример

Стъпка 1) Копирайте следния код в редактор.

class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}

Стъпка 2) Запазете, компилирайте и стартирайте кода.

Стъпка 3) Очакван изход. Накрая блокът се изпълнява, въпреки че е повдигнато изключение.

Стъпка 4) Променете стойността на променлива d = 1. Запазете, компилирайте и стартирайте кода и наблюдавайте изхода.

Резюме :

  • Един Изключение е грешка по време на изпълнение , което прекъсва нормалното протичане на програмата execution.Disruption по време на изпълнението на програмата се нарича като грешка или изключение.
  • Грешките са класифицирани в две категории
    • Грешки при компилиране - Синтаксични грешки, Семантични грешки
    • Грешки по време на изпълнение - Изключение
  • Една надеждна програма трябва да се справи с всички изключения и да продължи с нормалния си поток от изпълнение на програмата. Java предоставя вграден изключителен метод за обработка
  • Обработчик на изключения е набор от кодове, който обработва изключение . Изключенията могат да се обработват в Java с помощта на try & catch.
  • Опитайте да блокирате : Нормалният код продължава върху този блок.
  • Блок за улавяне : Ако има грешка в нормалния код, той ще влезе в този блок