logo

Tipuri de excepție în Java

În Java, excepție este un eveniment care are loc în timpul execuției unui program și perturbă fluxul normal al instrucțiunilor programului. Bug-urile sau erorile pe care nu le dorim și restricționăm execuția normală a codului programului nostru sunt denumite excepții . În această secțiune, ne vom concentra asupra tipuri de excepții în Java și diferențele dintre cele două.

Excepțiile pot fi clasificate în două moduri:

  1. Excepții încorporate
    • Excepție bifată
    • Excepție nebifată
  2. Excepții definite de utilizator
Tipuri de excepție în Java

Excepție încorporată

Excepții care sunt deja disponibile în Biblioteci Java sunt denumite excepție încorporată . Aceste excepții sunt capabile să definească situația de eroare, astfel încât să putem înțelege motivul primirii acestei erori. Poate fi clasificat în două mari categorii, adică verificate exceptii și excepție nebifată .

Excepție bifată

Verificat sunt numite excepții timp de compilare excepții deoarece aceste excepții sunt verificate la compilare de către compilator. Compilatorul asigură dacă programatorul gestionează excepția sau nu. Programatorul ar trebui să se ocupe de excepție; în caz contrar, sistemul a arătat o eroare de compilare.

CheckedExceptionExample.java

pregătiți-vă pentru testul mockito
 import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } } 

În codul de mai sus, încercăm să citim Bună ziua.txt fișier și afișați datele sau conținutul acestuia pe ecran. Programul aruncă următoarele excepții:

  1. The FileInputStream(Numele fișierului) constructorul aruncă FileNotFoundException care este o excepție verificată.
  2. The citit() metoda de FileInputStream clasa aruncă IOException .
  3. The închide() metoda aruncă, de asemenea, IOException.

Ieșire:

Tipuri de excepție în Java

Cum se rezolvă eroarea?

Există practic două moduri prin care putem rezolva aceste erori.

1) Excepțiile apar în metoda principală. Putem scăpa de aceste erori de compilare declarând excepția în metoda principală folosind aruncările Declarăm doar IOException, nu FileNotFoundException, din cauza relației copil-părinte. Clasa IOException este clasa părinte a FileNotFoundException, astfel încât această excepție va fi acoperită automat de IOException. Vom declara excepția în felul următor:

 class Exception{ public static void main(String args[]) throws IOException { ... ... } 

Dacă compilam și rulăm codul, erorile vor dispărea și vom vedea datele fișierului.

chenar folosind css
Tipuri de excepție în Java

2) De asemenea, putem gestiona aceste excepții folosind încearcă să prinzi Cu toate acestea, modul pe care l-am folosit mai sus nu este corect. Trebuie să oferim un mesaj semnificativ pentru fiecare tip de excepție. Făcând asta, ar fi ușor de înțeles eroarea. Vom folosi blocul try-catch în felul următor:

Excepție.java

 import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } } 

Vom vedea un mesaj de eroare adecvat 'Fișierul nu a fost găsit!' pe consolă, deoarece nu există un astfel de fișier în acea locație.

comanda arp-a
Tipuri de excepție în Java

Excepții nebifate

The necontrolat excepțiile sunt chiar opuse verificat excepții. Compilatorul nu va verifica aceste excepții în timpul compilării. Cu cuvinte simple, dacă un program aruncă o excepție neverificată și chiar dacă nu am gestionat-o sau nu o declaram, programul nu ar da o eroare de compilare. De obicei, apare atunci când utilizatorul furnizează date proaste în timpul interacțiunii cu programul.

Notă: Clasa RuntimeException este capabilă să rezolve toate excepțiile neverificate din cauza relației copil-părinte.

UncheckedExceptionExample1.java

 class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } } 

În programul de mai sus, am împărțit 35 la 0. Codul ar fi compilat cu succes, dar va genera o eroare ArithmeticException în timpul rulării. La împărțirea unui număr la 0, se aruncă excepția împărțire la zero, care este o excepție de debifare.

parse string la int

Ieșire:

Tipuri de excepție în Java

UncheckedException1.java

 class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } } 

Ieșire:

Tipuri de excepție în Java

În codul de mai sus, încercăm să obținem elementul situat la poziția 7, dar lungimea matricei este 6. Codul se compilează cu succes, dar aruncă ArrayIndexOutOfBoundsException în timpul execuției.

Excepție definită de utilizator

În Java , avem deja câteva clase de excepții încorporate, cum ar fi ArrayIndexOutOfBoundsException , NullPointerException , și ArithmeticException . Aceste excepții sunt limitate la declanșarea în anumite condiții predefinite. În Java, putem scrie propria noastră clasă de excepții prin extinderea clasei Exception. Putem arunca propria noastră excepție într-o anumită condiție folosind cuvântul cheie throw. Pentru a crea o excepție definită de utilizator, ar trebui să avem cunoștințe de bază despre cel încearcă să prinzi bloc și arunca cuvânt cheie .

Să scriem a program Java și creați o excepție definită de utilizator.

dactilografiat data ora

UserDefinedException.java

 import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } } 

Ieșire:

Tipuri de excepție în Java

Descriere:

În codul de mai sus, am creat două clase, adică UserDefinedException și NewException . The UserDefinedException are metoda noastră principală, iar NewException class este clasa noastră de excepții definită de utilizator, care se extinde excepție . În NewException clasă, creăm o variabilă X de tip întreg și atribuiți-i o valoare în constructor. După atribuirea unei valori acelei variabile, returnăm mesajul de excepție.

În UserDefinedException clasa, am adăugat un încearcă să prinzi bloc. În secțiunea de încercare, aruncăm excepția, adică NewException și transmiteți-i un număr întreg. Valoarea va fi transmisă clasei NewException și va returna un mesaj. Prindem acel mesaj în blocul de captură și îl arătăm pe ecran.

Diferența dintre excepția bifată și neverificată

Da nu Excepție bifată Excepție nebifată
1. Aceste excepții sunt verificate în timpul compilării. Aceste excepții sunt gestionate și în timpul compilării. Aceste excepții sunt chiar opuse excepțiilor bifate. Aceste excepții nu sunt verificate și gestionate în timpul compilării.
2. Aceste excepții sunt subclase directe ale excepției, dar nu sunt extinse din clasa RuntimeException. Sunt subclasele directe ale clasei RuntimeException.
3. Codul dă o eroare de compilare în cazul în care o metodă aruncă o excepție verificată. Compilatorul nu este capabil să gestioneze singur excepția. Codul se compilează fără nicio eroare, deoarece excepțiile scapă de atenția compilatorului. Aceste excepții sunt rezultatul erorilor create de utilizator în logica de programare.
4. Aceste excepții apar mai ales atunci când probabilitatea de eșec este prea mare. Aceste excepții apar mai ales din cauza greșelilor de programare.
5. Excepțiile comune verificate includ IOException, DataAccessException, InterruptedException etc. Excepțiile obișnuite neverificate includ ArithmeticException, InvalidClassException, NullPointerException etc.
6. Aceste excepții sunt propagate folosind cuvântul cheie throws. Acestea sunt propagate automat.
7. Este necesar să furnizați blocul try-catch și try-finally pentru a gestiona excepția verificată. În cazul excepției nebifate, aceasta nu este obligatorie.

Bug-urile sau erorile pe care nu le dorim și restricționăm execuția normală a programelor sunt denumite excepții .

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions etc sunt intrate în categoria de Excepție încorporată . Uneori, excepțiile încorporate nu sunt suficiente pentru a explica sau descrie anumite situații. Pentru a descrie aceste situații, trebuie să ne creăm propriile excepții prin crearea unei clase de excepții ca subclasă a Excepție clasă. Aceste tipuri de excepții intră în categoria de Excepție definită de utilizator .