logo

Java try-catch blok

Java skúste blok

Java skúste blok sa používa na uzavretie kódu, ktorý môže vyvolať výnimku. Musí sa použiť v rámci metódy.

Ak sa v konkrétnom príkaze v bloku try vyskytne výnimka, zvyšok kódu bloku sa nevykoná. Preto sa odporúča neudržiavať kód v bloku try, ktorý nevyvolá výnimku.

Za blokom Java try musí nasledovať buď catch, alebo nakoniec blok.

Syntax Java try-catch

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

Syntax bloku try-finally

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

Java catch blok

Java catch blok sa používa na spracovanie výnimky deklarovaním typu výnimky v rámci parametra. Deklarovaná výnimka musí byť výnimka nadradenej triedy (t. j. výnimka) alebo vygenerovaný typ výnimky. Dobrým prístupom je však deklarovať vygenerovaný typ výnimky.

algoritmus pre bfs

Blok catch musí byť použitý až po bloku try. Môžete použiť blok viacerých úlovkov s jedným pokusným blokom.

Interné fungovanie bloku try-catch v jazyku Java

Java try-catch blok

JVM najprv skontroluje, či je výnimka spracovaná alebo nie. Ak sa výnimka nespracuje, JVM poskytuje predvolenú obsluhu výnimky, ktorá vykonáva nasledujúce úlohy:

  • Vytlačí popis výnimky.
  • Vytlačí stopu zásobníka (Hierarchiu metód, kde sa vyskytla výnimka).
  • Spôsobí ukončenie programu.

Ale ak aplikačný programátor spracuje výnimku, normálny tok aplikácie sa zachová, t.j. zvyšok kódu sa vykoná.

Riešenie problému bez výnimky

Pokúsme sa pochopiť problém, ak nepoužijeme blok try-catch.

Príklad 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'); } } 
Vyskúšajte to

Výkon:

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

Ako je zobrazené vo vyššie uvedenom príklade, zvyšok kódu sa nevykoná (v takom prípade, zvyšok kódu výpis nie je vytlačený).

Po výnimke môže byť 100 riadkov kódu. Ak sa výnimka nespracuje, celý kód pod výnimkou sa nespustí.

Riešenie pomocou spracovania výnimiek

Pozrime sa na riešenie vyššie uvedeného problému blokom java try-catch.

Príklad 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'); } } 
Vyskúšajte to

Výkon:

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

Ako je zobrazené vo vyššie uvedenom príklade, zvyšok kódu sa vykonáva, t.j zvyšok kódu výpis sa vytlačí.

Príklad 3

V tomto príklade sme kód ponechali aj v bloku try, ktorý nevyvolá výnimku.

ako previesť char na reťazec java

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); } } } 
Vyskúšajte to

Výkon:

 java.lang.ArithmeticException: / by zero 

Tu vidíme, že ak sa v bloku try vyskytne výnimka, zvyšok kódu bloku sa nevykoná.

Príklad 4

Tu spracovávame výnimku pomocou výnimky nadradenej triedy.

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'); } } 
Vyskúšajte to

Výkon:

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

Príklad 5

Pozrime sa na príklad vytlačenia vlastnej správy pri výnimke.

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'); } } } 
Vyskúšajte to

Výkon:

 Can't divided by zero 

Príklad 6

Pozrime sa na príklad na vyriešenie výnimky v bloku 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)); } } } 
Vyskúšajte to

Výkon:

 25 

Príklad 7

V tomto príklade spolu s blokom try vložíme aj kód výnimky do bloku 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'); } } 
Vyskúšajte to

Výkon:

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

Tu vidíme, že blok catch neobsahoval kód výnimky. Takže uzavrite kód výnimky do bloku try a blok catch použite iba na spracovanie výnimiek.

Príklad 8

V tomto príklade spracovávame vygenerovanú výnimku (Arithmetic Exception) s iným typom triedy výnimky (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'); } } 
Vyskúšajte to

Výkon:

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

Príklad 9

Pozrime sa na príklad na spracovanie ďalšej nekontrolovanej výnimky.

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'); } } 
Vyskúšajte to

Výkon:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Príklad 10

Pozrime sa na príklad spracovania kontrolovanej výnimky.

príklady java kódu

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'); } } 
Vyskúšajte to

Výkon:

 File saved successfully