Manevrarea excepțiilor Java (cu exemple)

În tutorial, vom afla despre diferite abordări ale gestionării excepțiilor în Java cu ajutorul exemplelor.

În ultimul tutorial, am aflat despre excepțiile Java. Știm că excepțiile încetează anormal execuția unui program.

Acesta este motivul pentru care este important să gestionăm excepțiile. Iată o listă de abordări diferite pentru a gestiona excepțiile în Java.

  • încearcă … prinde bloc
  • în cele din urmă bloc
  • aruncă și aruncă cuvânt cheie

1. Încercați Java … bloc de captură

Blocul try-catch este utilizat pentru a gestiona excepțiile în Java. Iată sintaxa try… catchblocului:

 try ( // code ) catch(Exception e) ( // code )

Aici, am plasat codul care ar putea genera o excepție în interiorul tryblocului. Fiecare trybloc este urmat de un catchbloc.

Când apare o excepție, aceasta este prinsă de catchbloc. catchBlocul nu poate fi utilizat fără trybloc.

Exemplu: Manevrarea excepțiilor folosind try … catch

 class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Ieșire

 ArithmeticException => / de la zero

În exemplu, încercăm să împărțim un număr la 0. Aici, acest cod generează o excepție.

Pentru a gestiona excepția, am introdus codul 5 / 0în interiorul tryblocului. Acum, când apare o excepție, restul codului din interiorul tryblocului este omis.

catchBlocul prinde excepție și situațiile în interiorul blocului de captură este executat.

Dacă niciuna dintre instrucțiunile din trybloc nu generează o excepție, catchblocul este omis.

2. Java blocează în cele din urmă

În Java, finallyblocul este întotdeauna executat, indiferent dacă există sau nu o excepție.

finallyBlocul este opțională. Și, pentru fiecare trybloc, poate exista un singur finallybloc.

Sintaxa de bază a finallyblocului este:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Dacă apare o excepție, finallyblocul se execută după try… catchbloc. În caz contrar, se execută după blocul try. Pentru fiecare trybloc, poate exista un singur finallybloc.

Exemplu: Java Exception Handling folosind în cele din urmă blocul

 class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )

Ieșire

 ArithmeticException => / by zero Acesta este blocul final

În exemplul de mai sus, împărțim un număr la 0 în interiorul tryblocului. Aici, acest cod generează un ArithmeticException.

Excepția este surprinsă de catchbloc. Și apoi finallyblocul este executat.

Notă : Este o practică bună să utilizați finallyblocul. Acest lucru se datorează faptului că poate include coduri importante de curățare, cum ar fi,

  • cod care ar putea fi omis accidental prin returnare, continuare sau rupere
  • închiderea unui fișier sau conexiune

3. Java aruncă și aruncă cuvânt cheie

Cuvântul throwcheie Java este utilizat pentru a arunca în mod explicit o singură excepție.

Când facem throwo excepție, fluxul programului se mută de la trybloc la catchbloc.

Exemplu: Manevrarea excepțiilor folosind Java throw

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Ieșire

 Excepție în firul „principal” java.lang.ArithmeticException: Încercarea de a împărți la 0 la Main.divideByZero (Main.java:5) la Main.main (Main.java:9)

În exemplul de mai sus, vom arunca în mod explicit ArithmeticExceptionfolosind throwcuvântul cheie.

În mod similar, throwscuvântul cheie este utilizat pentru a declara tipul de excepții care ar putea apărea în cadrul metodei. Este utilizat în declarația metodei.

Exemplu: Java lansează cuvânt cheie

 import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )

Ieșire

 java.io.FileNotFoundException: test.txt (Sistemul nu poate găsi fișierul specificat)

Când rulăm acest program, dacă fișierul test.txt nu există, FileInputStreamaruncă un FileNotFoundExceptioncare extinde IOExceptionclasa.

findFile()Metoda specifică faptul că o IOExceptionpot fi aruncate. main()Metoda numește această metodă și se ocupă de excepție în cazul în care este aruncată.

Dacă o metodă nu gestionează excepții, tipul de excepții care pot apărea în cadrul acesteia trebuie specificat în throwsclauză.

Pentru a afla mai multe, vizitați Java throw și throws.

Articole interesante...