logo

Tipus d'excepció a Java

A Java, excepció és un esdeveniment que es produeix durant l'execució d'un programa i interromp el flux normal de les instruccions del programa. Els errors o errors que no volem i restringeixen l'execució normal del codi del nostre programa s'anomenen excepcions . En aquest apartat, ens centrarem en el tipus d'excepcions a Java i les diferències entre tots dos.

Les excepcions es poden classificar de dues maneres:

cadena a int a Java
  1. Excepcions incorporades
    • Excepció marcada
    • Excepció no marcada
  2. Excepcions definides per l'usuari
Tipus d'excepció a Java

Excepció incorporada

Excepcions que ja estan disponibles a Biblioteques Java s'anomenen excepció integrada . Aquestes excepcions poden definir la situació d'error de manera que puguem entendre el motiu d'aquest error. Es pot classificar en dues grans categories, és a dir, excepcions marcades i excepció no marcada .

Excepció marcada

Comprovat s'anomenen excepcions temps de compilació excepcions perquè el compilador comprova aquestes excepcions en temps de compilació. El compilador assegura si el programador gestiona l'excepció o no. El programador hauria de gestionar l'excepció; en cas contrari, el sistema ha mostrat un error de compilació.

CheckedExceptionExample.java

 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(); } } 

Al codi anterior, estem intentant llegir el Hola.txt fitxer i mostrar les seves dades o contingut a la pantalla. El programa ofereix les següents excepcions:

  1. El FileInputStream(nom del fitxer del fitxer) el constructor llança el FileNotFoundException això és una excepció marcada.
  2. El llegir () mètode de la FileInputStream classe llença el IOException .
  3. El Tanca() mètode també llança la IOException.

Sortida:

Tipus d'excepció a Java

Com resoldre l'error?

Bàsicament, hi ha dues maneres de resoldre aquests errors.

1) Les excepcions es donen al mètode principal. Podem desfer-nos d'aquests errors de compilació declarant l'excepció al mètode principal utilitzant els llançaments Només declarem l'IOException, no FileNotFoundException, a causa de la relació fill-parent. La classe IOException és la classe principal de FileNotFoundException, de manera que aquesta excepció es cobrirà automàticament per IOException. Declararem l'excepció de la manera següent:

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

Si compilem i executem el codi, els errors desapareixeran i veurem les dades del fitxer.

Tipus d'excepció a Java

2) També podem gestionar aquestes excepcions utilitzant provar-atrapar Tanmateix, la manera que hem utilitzat anteriorment no és correcta. Hem de donar un missatge significatiu per a cada tipus d'excepció. Fent això seria fàcil entendre l'error. Utilitzarem el bloc try-catch de la manera següent:

... en java

Exception.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); } } } 

Veurem un missatge d'error adequat 'Arxiu no trobat!' a la consola perquè no hi ha aquest fitxer en aquesta ubicació.

Tipus d'excepció a Java

Excepcions no marcades

El sense marcar les excepcions són just oposades a comprovat excepcions. El compilador no comprovarà aquestes excepcions en temps de compilació. En paraules senzilles, si un programa llança una excepció no marcada, i fins i tot si no la manegem ni la declarem, el programa no donaria un error de compilació. Normalment, es produeix quan l'usuari proporciona dades incorrectes durant la interacció amb el programa.

Nota: La classe RuntimeException és capaç de resoldre totes les excepcions no marcades a causa de la relació fill-parent.

UncheckedExceptionExample1.java

Característiques de java 8
 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); } } 

Al programa anterior, hem dividit 35 per 0. El codi es compilaria correctament, però generarà un error ArithmeticException en temps d'execució. En dividir un nombre per 0, es produeix l'excepció de dividir per zero que és una excepció desmarcada.

Sortida:

Tipus d'excepció a Java

UncheckedException1.java

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

Sortida:

Tipus d'excepció a Java

Al codi anterior, estem intentant que l'element estigui situat a la posició 7, però la longitud de la matriu és 6. El codi es compila correctament, però llança l'excepció ArrayIndexOutOfBoundsException en temps d'execució.

Excepció definida per l'usuari

En Java , ja tenim algunes classes d'excepció integrades com ArrayIndexOutOfBoundsException , NullPointerException , i Excepció aritmètica . Aquestes excepcions es limiten a activar-se en algunes condicions predefinides. A Java, podem escriure la nostra pròpia classe d'excepció ampliant la classe d'excepció. Podem llançar la nostra pròpia excepció en una condició particular mitjançant la paraula clau throw. Per crear una excepció definida per l'usuari, hauríem de tenir coneixements bàsics el provar-atrapar bloc i llançar paraula clau .

Escrivim a Programa Java i crear una excepció definida per l'usuari.

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) ; } } 

Sortida:

Tipus d'excepció a Java

Descripció:

En el codi anterior, hem creat dues classes, és a dir, UserDefinedException i Nova excepció . El UserDefinedException té el nostre mètode principal, i el Nova excepció class és la nostra classe d'excepcions definida per l'usuari, que s'estén excepció . En el Nova excepció classe, creem una variable x de tipus enter i assigneu-li un valor al constructor. Després d'assignar un valor a aquesta variable, retornem el missatge d'excepció.

En el UserDefinedException classe, hem afegit a provar-atrapar bloc. A la secció de prova, llencem l'excepció, és a dir, Nova excepció i passar-li un nombre enter. El valor es passarà a la classe NewException i retornarà un missatge. Agafem aquest missatge al bloc catch i el mostrem a la pantalla.

vistes i taules

Diferència entre l'excepció marcada i no marcada

S.No Excepció marcada Excepció no marcada
1. Aquestes excepcions es comproven en temps de compilació. Aquestes excepcions també es gestionen en temps de compilació. Aquestes excepcions són just oposades a les excepcions marcades. Aquestes excepcions no es comproven ni es gestionen en temps de compilació.
2. Aquestes excepcions són subclasses directes d'excepció però no s'estenen des de la classe RuntimeException. Són les subclasses directes de la classe RuntimeException.
3. El codi dóna un error de compilació en el cas que un mètode llança una excepció marcada. El compilador no és capaç de gestionar l'excepció per si mateix. El codi es compila sense cap error perquè les excepcions escapen a l'avís del compilador. Aquestes excepcions són el resultat d'errors creats per l'usuari en la lògica de programació.
4. Aquestes excepcions es produeixen majoritàriament quan la probabilitat de fallada és massa alta. Aquestes excepcions es produeixen principalment a causa d'errors de programació.
5. Les excepcions comprovades habituals inclouen IOException, DataAccessException, InterruptedException, etc. Les excepcions habituals no marcades inclouen ArithmeticException, InvalidClassException, NullPointerException, etc.
6. Aquestes excepcions es propaguen mitjançant la paraula clau throws. Aquests es propaguen automàticament.
7. Cal proporcionar el bloc try-catch i try-finally per gestionar l'excepció marcada. En cas d'excepció no marcada, no és obligatori.

Els errors o errors que no volem i restringeixen l'execució normal dels programes s'anomenen excepcions .

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions etc. vénen a la categoria de Excepció incorporada . De vegades, les excepcions integrades no són suficients per explicar o descriure determinades situacions. Per descriure aquestes situacions, hem de crear les nostres pròpies excepcions creant una classe d'excepció com a subclasse de la Excepció classe. Aquest tipus d'excepcions entren a la categoria de Excepció definida per l'usuari .