Î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… catch
blocului:
try ( // code ) catch(Exception e) ( // code )
Aici, am plasat codul care ar putea genera o excepție în interiorul try
blocului. Fiecare try
bloc este urmat de un catch
bloc.
Când apare o excepție, aceasta este prinsă de catch
bloc. catch
Blocul nu poate fi utilizat fără try
bloc.
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 try
blocului. Acum, când apare o excepție, restul codului din interiorul try
blocului este omis.
catch
Blocul prinde excepție și situațiile în interiorul blocului de captură este executat.
Dacă niciuna dintre instrucțiunile din try
bloc nu generează o excepție, catch
blocul este omis.
2. Java blocează în cele din urmă
În Java, finally
blocul este întotdeauna executat, indiferent dacă există sau nu o excepție.
finally
Blocul este opțională. Și, pentru fiecare try
bloc, poate exista un singur finally
bloc.
Sintaxa de bază a finally
blocului este:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Dacă apare o excepție, finally
blocul se execută după try… catch
bloc. În caz contrar, se execută după blocul try. Pentru fiecare try
bloc, poate exista un singur finally
bloc.
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 try
blocului. Aici, acest cod generează un ArithmeticException
.
Excepția este surprinsă de catch
bloc. Și apoi finally
blocul este executat.
Notă : Este o practică bună să utilizați finally
blocul. 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 throw
cheie Java este utilizat pentru a arunca în mod explicit o singură excepție.
Când facem throw
o excepție, fluxul programului se mută de la try
bloc la catch
bloc.
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 ArithmeticException
folosind throw
cuvântul cheie.
În mod similar, throws
cuvâ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ă, FileInputStream
aruncă un FileNotFoundException
care extinde IOException
clasa.
findFile()
Metoda specifică faptul că o IOException
pot 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 throws
clauză.
Pentru a afla mai multe, vizitați Java throw și throws.