logo

Gestió d'excepcions a Java

  1. Tractament d'excepcions
  2. Avantatge de la gestió d'excepcions
  3. Jerarquia de classes d'excepció
  4. Tipus d'excepció
  5. Exemple d'excepció
  6. Escenaris on es pot produir una excepció

El Gestió d'excepcions a Java és un dels poderosos mecanisme per gestionar els errors en temps d'execució de manera que es pugui mantenir el flux normal de l'aplicació.

En aquest tutorial, aprendrem sobre les excepcions de Java, els seus tipus i la diferència entre les excepcions marcades i no marcades.

java cast int a cadena

Què és l'excepció a Java?

Significat del diccionari: L'excepció és una condició anormal.

A Java, una excepció és un esdeveniment que interromp el flux normal del programa. És un objecte que es llança en temps d'execució.

Què és la gestió d'excepcions?

El maneig d'excepcions és un mecanisme per gestionar errors en temps d'execució com ClassNotFoundException, IOException, SQLException, RemoteException, etc.

Avantatge de la gestió d'excepcions

L'avantatge principal del maneig d'excepcions és per mantenir el flux normal de l'aplicació . Una excepció normalment interromp el flux normal de l'aplicació; per això hem de gestionar les excepcions. Considerem un escenari:

 statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10; 

Suposem que hi ha 10 sentències en un programa Java i que es produeix una excepció a la sentència 5; la resta del codi no s'executarà, és a dir, les sentències 6 a 10 no s'executaran. Tanmateix, quan realitzem el maneig d'excepcions, s'executaran la resta de sentències. Per això fem servir el maneig d'excepcions Java .

Saps?
  • Quina diferència hi ha entre les excepcions marcades i no marcades?
  • Què passa darrere del codi int data=50/0;?
  • Per què utilitzar el bloc de captura múltiple?
  • Hi ha alguna possibilitat que el bloc finally no s'executi?
  • Què és la propagació d'excepcions?
  • Quina diferència hi ha entre la paraula clau throw i throws?
  • Quines són les 4 regles per utilitzar la gestió d'excepcions amb substitució de mètodes?

Jerarquia de classes d'excepció de Java

La classe java.lang.Throwable és la classe arrel de la jerarquia d'excepcions Java heretada per dues subclasses: Exception i Error. La jerarquia de les classes d'excepció de Java es mostra a continuació:

jerarquia de gestió d'excepcions

Tipus d'excepcions de Java

Hi ha principalment dos tipus d'excepcions: marcades i no marcades. Un error es considera com l'excepció no marcada. Tanmateix, segons Oracle, hi ha tres tipus d'excepcions, a saber:

  1. Excepció marcada
  2. Excepció no marcada
  3. Error
jerarquia de gestió d'excepcions

Diferència entre excepcions marcades i no marcades

1) Excepció marcada

Les classes que hereten directament la classe Throwable, excepte RuntimeException i Error, es coneixen com a excepcions marcades. Per exemple, IOException, SQLException, etc. Les excepcions marcades es comproven en temps de compilació.

2) Excepció sense marcar

Les classes que hereten la RuntimeException es coneixen com a excepcions no marcades. Per exemple, ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, etc. Les excepcions no marcades no es comproven en temps de compilació, però sí en temps d'execució.

3) Error

L'error és irrecuperable. Alguns exemples d'errors són OutOfMemoryError, VirtualMachineError, AssertionError, etc.

Paraules clau d'excepció de Java

Java proporciona cinc paraules clau que s'utilitzen per gestionar l'excepció. La taula següent descriu cadascun.

Paraula clauDescripció
provarLa paraula clau 'prova' s'utilitza per especificar un bloc on hauríem de col·locar un codi d'excepció. Vol dir que no podem utilitzar el bloc try sols. El bloc try ha d'anar seguit de catch o finally.
agafarEl bloc 'catch' s'utilitza per gestionar l'excepció. Ha d'anar precedit del bloc try, la qual cosa significa que no podem utilitzar el bloc catch sols. Pot ser seguit per finalment bloquejar més tard.
finalmentEl bloc 'finally' s'utilitza per executar el codi necessari del programa. S'executa tant si es gestiona una excepció com si no.
llançarLa paraula clau 'tirar' s'utilitza per llançar una excepció.
llançamentsLa paraula clau 'throws' s'utilitza per declarar excepcions. Especifica que es pot produir una excepció en el mètode. No llança cap excepció. Sempre s'utilitza amb la signatura del mètode.

Exemple de gestió d'excepcions de Java

Vegem un exemple de gestió d'excepcions de Java en què estem utilitzant una instrucció try-catch per gestionar l'excepció.

JavaExceptionExample.java

 public class JavaExceptionExample{ public static void main(String args[]){ try{ //code that may raise exception int data=100/0; }catch(ArithmeticException e){System.out.println(e);} //rest code of the program System.out.println('rest of the code...'); } } 
Prova-ho ara

Sortida:

 Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code... 

A l'exemple anterior, 100/0 genera una ArithmeticException que es gestiona amb un bloc try-catch.

Escenaris comuns d'excepcions de Java

Es donen alguns escenaris on es poden produir excepcions no marcades. Són els següents:

1) Un escenari on es produeix una excepció ArithmeticException

Si dividim qualsevol nombre per zero, es produeix una ArithmeticException.

 int a=50/0;//ArithmeticException 

2) Un escenari on es produeix l'excepció NullPointerException

Si tenim un valor nul en qualsevol variable , realitzar qualsevol operació sobre la variable llança una NullPointerException.

 String s=null; System.out.println(s.length());//NullPointerException 

3) Un escenari on es produeix NumberFormatException

Si el format de qualsevol variable o nombre no coincideix, pot resultar en NumberFormatException. Suposem que tenim un corda variable que té caràcters; convertir aquesta variable en dígit provocarà NumberFormatException.

 String s='abc'; int i=Integer.parseInt(s);//NumberFormatException 

4) Un escenari on es produeix una excepció ArrayIndexOutOfBoundsException

Quan una matriu supera la seva mida, es produeix l'excepció ArrayIndexOutOfBoundsException. pot haver-hi altres motius per produir ArrayIndexOutOfBoundsException. Considereu les afirmacions següents.

 int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException 

Índex d'excepcions de Java

  1. Bloc Try-Catch de Java
  2. Bloc de captura múltiple de Java
  3. Prova anidada de Java
  4. Java finalment bloc
  5. Paraula clau de llançament de Java
  6. Propagació d'excepcions de Java
  7. Java llança la paraula clau
  8. Llançament de Java vs Llançaments
  9. Java Final vs Finally vs Finalize
  10. Gestió d'excepcions de Java amb substitució de mètodes
  11. Excepcions personalitzades de Java