logo

Java try-catch блок

Java опитен блок

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

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

Java try block трябва да бъде последван от catch или finally block.

Синтаксис на Java try-catch

 try{ //code that may throw an exception }catch(Exception_class_Name ref){} 

Синтаксис на блока try-finally

 try{ //code that may throw an exception }finally{} 

Блок за улавяне на Java

Java catch block се използва за обработка на изключението чрез деклариране на типа изключение в параметъра. Декларираното изключение трябва да бъде изключение на родителския клас (т.е. Exception) или генериран тип изключение. Добрият подход обаче е да декларирате генерирания тип изключение.

великденски яйца в android

Блокът catch трябва да се използва само след блока try. Можете да използвате няколко блока catch с един блок за опит.

Вътрешна работа на Java try-catch блок

Java try-catch блок

JVM първо проверява дали изключението е обработено или не. Ако изключението не е обработено, JVM предоставя манипулатор на изключения по подразбиране, който изпълнява следните задачи:

  • Отпечатва описание на изключението.
  • Отпечатва проследяването на стека (Йерархия от методи, при които е възникнало изключението).
  • Причинява прекратяване на програмата.

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

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

Нека се опитаме да разберем проблема, ако не използваме блок try-catch.

Пример 1

TryCatchExample1.java

 public class TryCatchExample1 { public static void main(String[] args) { int data=50/0; //may throw exception System.out.println('rest of the code'); } } 
Тествайте сега

Изход:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Както е показано в горния пример, останалата част от кода не се изпълнява (в такъв случай, останалата част от кода изявлението не се отпечатва).

Може да има 100 реда код след изключението. Ако изключението не бъде обработено, целият код под изключението няма да бъде изпълнен.

Решение чрез обработка на изключения

Нека видим решението на горния проблем чрез java блок try-catch.

Пример 2

TryCatchExample2.java

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

Изход:

 java.lang.ArithmeticException: / by zero rest of the code 

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

Пример 3

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

деинсталирайте angular cli

TryCatchExample3.java

 public class TryCatchExample3 { public static void main(String[] args) { try { int data=50/0; //may throw exception // if exception occurs, the remaining statement will not exceute System.out.println('rest of the code'); } // handling the exception catch(ArithmeticException e) { System.out.println(e); } } } 
Тествайте сега

Изход:

 java.lang.ArithmeticException: / by zero 

Тук можем да видим, че ако възникне изключение в блока try, останалата част от блоковия код няма да се изпълни.

Пример 4

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

TryCatchExample4.java

 public class TryCatchExample4 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception by using Exception class catch(Exception e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Тествайте сега

Изход:

 java.lang.ArithmeticException: / by zero rest of the code 

Пример 5

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

TryCatchExample5.java

 public class TryCatchExample5 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception catch(Exception e) { // displaying the custom message System.out.println('Can't divided by zero'); } } } 
Тествайте сега

Изход:

 Can't divided by zero 

Пример 6

Нека видим пример за разрешаване на изключението в catch блок.

TryCatchExample6.java

 public class TryCatchExample6 { public static void main(String[] args) { int i=50; int j=0; int data; try { data=i/j; //may throw exception } // handling the exception catch(Exception e) { // resolving the exception in catch block System.out.println(i/(j+2)); } } } 
Тествайте сега

Изход:

 25 

Пример 7

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

TryCatchExample7.java

 public class TryCatchExample7 { public static void main(String[] args) { try { int data1=50/0; //may throw exception } // handling the exception catch(Exception e) { // generating the exception in catch block int data2=50/0; //may throw exception } System.out.println('rest of the code'); } } 
Тествайте сега

Изход:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

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

Пример 8

В този пример обработваме генерираното изключение (Arithmetic Exception) с различен тип клас изключение (ArrayIndexOutOfBoundsException).

TryCatchExample8.java

 public class TryCatchExample8 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // try to handle the ArithmeticException using ArrayIndexOutOfBoundsException catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Тествайте сега

Изход:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Пример 9

Нека видим пример за обработка на друго непроверено изключение.

TryCatchExample9.java

 public class TryCatchExample9 { public static void main(String[] args) { try { int arr[]= {1,3,5,7}; System.out.println(arr[10]); //may throw exception } // handling the array exception catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Тествайте сега

Изход:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Пример 10

Нека видим пример за обработка на проверено изключение.

java изключения

TryCatchExample10.java

 import java.io.FileNotFoundException; import java.io.PrintWriter; public class TryCatchExample10 { public static void main(String[] args) { PrintWriter pw; try { pw = new PrintWriter('jtp.txt'); //may throw exception pw.println('saved'); } // providing the checked exception handler catch (FileNotFoundException e) { System.out.println(e); } System.out.println('File saved successfully'); } } 
Тествайте сега

Изход:

 File saved successfully