Ce este excepția în Java?
Excepția în Java este un eveniment care întrerupe executarea instrucțiunilor programului și perturbă fluxul normal de execuție a programului. Este un obiect care împachetează o informație despre evenimentul de eroare care a apărut în cadrul unei metode și este transmisă sistemului de execuție. În Java, excepțiile sunt utilizate în principal pentru indicarea diferitelor tipuri de condiții de eroare.
În acest tutorial, veți învăța-
- Ce este excepția?
- De ce avem nevoie de excepție?
- Cum să gestionați excepția
- Încercați Catch Block
- Ierarhia clasei de excepții Java
- Java În cele din urmă bloc
Există două tipuri de erori:
- Compilați erorile de timp
- Erori de rulare
Erorile de timp de compilare pot fi din nou clasificate din nou în două tipuri:
- Erori de sintaxă
- Erori semantice
Exemple de erori de sintaxă:
În loc să declare
int a;
l-ați declarat greșit in a;
pentru că compilatorul va genera o eroare.
Exemplu: Ați declarat o variabilă
int a;
și după câteva linii de cod , declarați din nou un număr întreg ca int a;
. Toate aceste erori sunt evidențiate atunci când compilați codul.
Exemplu de erori de execuție
O eroare Runtime se numește o eroare de excepții . Este orice eveniment care întrerupe fluxul normal de execuție a programului.
Exemple pentru excepții sunt, excepția aritmetică, excepția Nullpointer, excepția divizează la zero, etc.
Excepțiile din Java sunt ceva care nu se află sub controlul dezvoltatorilor.
Faceți clic aici dacă videoclipul nu este accesibil
De ce avem nevoie de excepție?
Să presupunem că ați codat un program pentru a accesa serverul. Lucrurile au funcționat bine în timp ce dezvoltați codul.
În timpul rulării propriu-zise, serverul este oprit. Când programul dvs. a încercat să îl acceseze, se ridică o excepție.
Cum să gestionați excepția
Până acum am văzut, excepția este dincolo de controlul dezvoltatorului. Dar a da vina pe eșecul codului dvs. pe probleme de mediu nu este o soluție. Aveți nevoie de o programare robustă, care să aibă grijă de situații excepționale. Un astfel de cod este cunoscut sub numele de Exception Handler.
În exemplul nostru, o bună gestionare a excepțiilor ar fi, atunci când serverul este oprit, conectarea la serverul de rezervă.
Pentru a implementa acest lucru, introduceți codul dvs. pentru a vă conecta la server (folosind condițiile tradiționale if and else).
Veți verifica dacă serverul este oprit. Dacă da, scrieți codul pentru a vă conecta la serverul de rezervă.
O astfel de organizare a codului, folosind bucla „if” și „else” nu este eficientă atunci când codul dvs. are mai multe excepții Java de gestionat.
class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}
Încercați Catch Block
Java oferă o manipulare excepțională încorporată.
- Codul normal intră într-un bloc TRY .
- Codul de gestionare a excepțiilor intră în blocul CATCH
În exemplul nostru, blocul TRY va conține codul pentru conectarea la server. Blocul CATCH va conține codul pentru conectarea la serverul de rezervă.
În cazul în care serverul este pornit, codul din blocul CATCH va fi ignorat. În cazul în care serverul este oprit, se ridică o excepție și codul din blocul de captură va fi executat.
Deci, așa este tratată excepția în Java.
Sintaxă pentru utilizarea try & catch
try{statement(s)}catch (exceptiontype name){statement(s)}
Exemplu
Pasul 1) Copiați următorul cod într-un editor
class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}
Pasul 2) Salvați fișierul și compilați codul. Rulați programul utilizând comanda, JavaException Java
Pasul 3) O excepție aritmetică - împărțirea la zero este prezentată ca mai jos pentru linia # 5 și linia # 6 nu este executată niciodată
Pasul 4) Acum, să vedem cum examinăm cum ne va ajuta să gestionăm această excepție. Vom pune excepția care cauzează linia de cod într-un bloc de încercare , urmat de un bloc de captură . Copiați următorul cod în editor.
class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}
Pasul 5) Salvați, compilați și rulați codul. Veți obține următoarea ieșire
După cum observați, excepția este gestionată și ultima linie de cod este, de asemenea, executată. De asemenea, rețineți că Linia # 7 nu va fi executată deoarece imediat ce se ridică o excepție, fluxul de control sare la blocul de captură.
Notă: Obiectul AritmeticException „e” conține informații despre excepția care a avut loc, care pot fi utile în luarea acțiunilor de recuperare.
Ierarhia clasei de excepții Java
După executarea unei instrucțiuni catch, celelalte sunt ocolite, iar execuția continuă după blocul try / catch. Blocurile de captură imbricate urmează ierarhia Exception.- Toate clasele de excepție din Java extind clasa „Throwable”. Throwable are două subclase, Error și Exception
- Clasa Error definește excepția sau problemele care nu sunt de așteptat să apară în condiții normale de programul nostru, de exemplu, eroare de memorie, eroare hardware, eroare JVM etc.
- Clasa Exception reprezintă excepțiile care pot fi gestionate de programul nostru, iar programul nostru poate fi recuperat din această excepție folosind blocul try and catch
- O excepție Runtime este o sub-clasă a clasei de excepție. Excepția de acest tip reprezintă excepția care are loc în timpul rulării și care nu poate fi urmărită în timpul compilării. Un exemplu excelent al acestuia este împărțirea la excepția zero sau excepția indicatorului nul etc.
- Excepția IO este generată în timpul operațiilor de intrare și ieșire
- Excepțiile întrerupte în Java, sunt generate în timpul filetării multiple.
Pasul 1) Copiați următorul cod într-un editor.
class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}
Pasul 2) Salvați fișierul și compilați codul. Rulați programul utilizând comanda, JavaException Java .
Pasul 3) Este generată o excepție ArrayIndexOutOfBoundsException. Schimbați valoarea int d la 0. Salvați, compilați și rulați codul.
Pasul 4 ) Trebuie generată o excepție ArithmeticException.
Pasul 5) Descomentați linia # 10 până la linia # 12. Salvați, compilați și rulați codul.
Pasul 6) Eroare de compilare? Acest lucru se datorează faptului că Exception este clasa de bază a ArithmeticException Exception. Orice excepție care este ridicată de ArithmeticException poate fi gestionată și de clasa Exception. Deci, blocul de captură al ArithmeticException nu va avea niciodată șansa de a fi executat, ceea ce îl face redundant. De aici rezultă eroarea de compilare.
Java În cele din urmă bloc
Blocul final este executat, indiferent dacă o excepție este ridicată în blocul try. Este opțional de utilizat cu un bloc de încercare.
try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}
În cazul în care se ridică o excepție în blocul try, în cele din urmă blocul este executat după executarea blocului catch.
Exemplu
Pasul 1) Copiați următorul cod într-un editor.
class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}
Pasul 2) Salvați, compilați și rulați codul.
Pasul 3) Ieșire preconizată. În cele din urmă blocul este executat chiar dacă este ridicată o excepție.
Pasul 4) Modificați valoarea variabilei d = 1. Salvați, compilați și rulați codul și observați ieșirea.
Rezumat :
- O excepție este o eroare de execuție care întrerupe fluxul normal de execuție a programului. Întreruperea din timpul execuției programului este denumită eroare sau excepție.
- Erorile sunt clasificate în două categorii
- Compilați erori de timp - erori de sintaxă, erori semantice
- Erori de execuție - excepție
- Un program robust ar trebui să gestioneze toate excepțiile și să continue cu fluxul normal de execuție a programului. Java oferă o metodă de manipulare excepțională încorporată
- Exception Handler este un set de cod care gestionează o excepție . Excepțiile pot fi gestionate în Java folosind try & catch.
- Încercați blocarea : codul normal merge pe acest bloc.
- Bloc de captură : dacă există o eroare în codul normal, atunci acesta va intra în acest bloc