Java mēģinājuma bloks
Java mēģināt bloks tiek izmantots, lai iekļautu kodu, kas var radīt izņēmumu. Tas ir jāizmanto metodes ietvaros.
Ja konkrētajā try blokā esošajā paziņojumā notiek izņēmums, pārējais bloka kods netiks izpildīts. Tāpēc ieteicams neglabāt kodu try blokā, kas neradīs izņēmumu.
Java try block ir jāseko vai nu noķeršanai, vai beigu blokam.
Java try-catch sintakse
try{ //code that may throw an exception }catch(Exception_class_Name ref){}
Mēģiniet beidzot bloķēt sintakse
try{ //code that may throw an exception }finally{}
Java nozvejas bloks
Java nozvejas bloks tiek izmantots, lai apstrādātu izņēmumu, parametrā deklarējot izņēmuma veidu. Deklarētajam izņēmumam ir jābūt vecākklases izņēmumam (t.i., Izņēmumam) vai ģenerētajam izņēmuma veidam. Tomēr laba pieeja ir ģenerētā izņēmuma veida deklarēšana.
instantiēta java
Noķeršanas bloks ir jāizmanto tikai pēc mēģinājuma bloka. Varat izmantot vairākus nozvejas blokus ar vienu mēģinājuma bloku.
Java try-catch bloka iekšējā darbība
JVM vispirms pārbauda, vai izņēmums ir apstrādāts vai nē. Ja izņēmums netiek apstrādāts, JVM nodrošina noklusējuma izņēmumu apstrādātāju, kas veic šādus uzdevumus:
- Izdrukā izņēmuma aprakstu.
- Izdrukā steka trasējumu (to metožu hierarhija, kur noticis izņēmums).
- Izraisa programmas darbības pārtraukšanu.
Bet, ja lietojumprogrammas programmētājs apstrādā izņēmumu, tiek uzturēta parastā lietojumprogrammas plūsma, t.i., tiek izpildīta pārējā koda daļa.
Problēma bez izņēmuma apstrādi
Mēģināsim izprast problēmu, ja neizmantojam try-catch bloku.
1. piemērs
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'); } }Izmēģiniet to tūlīt
Izvade:
Exception in thread 'main' java.lang.ArithmeticException: / by zero
Kā parādīts iepriekš minētajā piemērā, pārējā koda daļa netiek izpildīts (tādā gadījumā pārējā koda daļa paziņojums netiek drukāts).
Pēc izņēmuma var būt 100 koda rindiņas. Ja izņēmums netiek apstrādāts, viss kods zem izņēmuma netiks izpildīts.
Risinājums ar izņēmuma apstrādi
Apskatīsim iepriekš minētās problēmas risinājumu, izmantojot Java try-catch bloku.
2. piemērs
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'); } }Izmēģiniet to tūlīt
Izvade:
java.lang.ArithmeticException: / by zero rest of the code
Kā parādīts iepriekš minētajā piemērā, pārējā koda daļa tiek izpildīts, t.i., pārējā koda daļa paziņojums tiek izdrukāts.
3. piemērs
Šajā piemērā mēs arī saglabājām kodu izmēģinājuma blokā, kas neradīs izņēmumu.
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); } } }Izmēģiniet to tūlīt
Izvade:
java.lang.ArithmeticException: / by zero
Šeit mēs redzam, ka, ja mēģinājuma blokā notiek izņēmums, pārējais bloka kods netiks izpildīts.
4. piemērs
Šeit mēs apstrādājam izņēmumu, izmantojot vecāku klases izņēmumu.
Madhuri teica, nāc
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'); } }Izmēģiniet to tūlīt
Izvade:
java.lang.ArithmeticException: / by zero rest of the code
5. piemērs
Apskatīsim piemēru pielāgota ziņojuma drukāšanai izņēmuma gadījumā.
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'); } } }Izmēģiniet to tūlīt
Izvade:
Can't divided by zero
6. piemērs
Apskatīsim piemēru, kā novērst izņēmumu uztveršanas blokā.
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)); } } }Izmēģiniet to tūlīt
Izvade:
25
7. piemērs
Šajā piemērā kopā ar izmēģinājuma bloku mēs arī iekļaujam izņēmuma kodu uztveršanas blokā.
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'); } }Izmēģiniet to tūlīt
Izvade:
Exception in thread 'main' java.lang.ArithmeticException: / by zero
Šeit mēs redzam, ka nozvejas blokā nebija izņēmuma koda. Tāpēc iekļaujiet izņēmuma kodu izmēģinājuma blokā un izmantojiet tikai noķeršanas bloku, lai apstrādātu izņēmumus.
8. piemērs
Šajā piemērā mēs apstrādājam ģenerēto izņēmumu (aritmētisko izņēmumu) ar cita veida izņēmuma klasi (ArrayIndexOutOfBoundsException).
TryCatchExample8.java
i d e pilna forma
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'); } }Izmēģiniet to tūlīt
Izvade:
Exception in thread 'main' java.lang.ArithmeticException: / by zero
9. piemērs
Apskatīsim piemēru, kā rīkoties ar citu neatzīmētu izņēmumu.
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'); } }Izmēģiniet to tūlīt
Izvade:
java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code
10. piemērs
Apskatīsim piemēru pārbaudītā izņēmuma apstrādei.
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'); } }Izmēģiniet to tūlīt
Izvade:
File saved successfully