You are here
CAPTURA DE EXCEPCIONES EN JAVA Sin categoría 

CAPTURA DE EXCEPCIONES EN JAVA

CAPTURA DE EXCEPCIONES EN JAVA

Un  manejador de  excepciones es una  porción de  código  que  se va  a encargar de tratar las posibles excepciones que  se puedan generar. En Java, de  forma  similar  a C++ se pueden tratar las excepciones previstas por  el programador utilizando unos mecanismos, los manejadores de excepciones, que se estructuran en tres bloques:

 

 

  1. El bloque try: Lo primero que hay que hacer para  que un método sea capaz  de tratar una  excepción generada por  la máquina virtual Java  es encerrar las  instrucciones susceptibles de generarla en un bloque  try.

 

 

try {

 

Bloque de Instrucciones

 

}

 

 

Cualquier excepción que  se produzca dentro del  bloque try  será  analizado por  el bloque o bloques catch que  se verá  en el punto siguiente. En el momento en que  se produzca la excepción, se abandona el bloque try  y, por  lo tanto,  las instrucciones que sigan  al punto donde se produjo la excepción no serán  ejecutadas. Cada  bloque try debe tener  asociado al menos  un bloque  catch.

 

  1. b. El bloque catch: Por cada  bloque try pueden declararse uno  o varios  bloques catch, cada uno de ellos capaz  de tratar un tipo de excepción.

 

 

 

try {

 

 

Bloque de Instrucciones

 

 

} catch (TipoExcepción nombreVariable) { Bloque de Instrucciones del primer catch

} catch (TipoExcepción nombreVariable) {

 

 

 

} …

Bloque de Instrucciones del segundo catch

 

 

 

 

Para  declarar el tipo de excepción que es capaz  de tratar un bloque catch, se declara un  objeto  cuya  clase  es la clase  de  la excepción que  se desea  tratar o una  de  sus superclases.

 

 

Ejemplo:

 

class ExcepcionTratada {

 

public static void main(String[] arg) {

 

int i=5; j=0;

 

try {

 

int k=i/j;

 

System.out.println(“Esto   no   se   va   a ejecutar”);

}catch (ArithmeticException ex) {

System.out.println(“Has intentado dividir por cero”);

 

}

 

System.out.println(“Fin del programa”);

 

}

 

}

 

 

 

  1. c. El bloque finally (no existente en C++): El bloque finally  se utiliza  para  ejecutar  un bloque de  instrucciones sea cual  sea la excepción que  se produzc Este bloque se ejecutará en cualquier caso, incluso  si no se produce ninguna excepción. Sirve para

no tener  que repetir código  en el bloque  try y en los bloques catch.

 

 

 

try {

 

 

}

 

 

Bloque de Instrucciones del try

 

catch (TipoExcepción nombreVariable) {

 

Bloque de Instrucciones del primer catch

 

}

 

catch (TipoExcepción nombreVariable) {

 

Bloque de Instrucciones del segundo catch

 

} …..

 

}

 

finally {

 

Bloque de Instrucciones de finally

 

}

 

 

 

 

 

Todos  los métodos Java utilizan la sentencia throw para  lanzar una  excepción. Esta sentencia requiere un sólo argumento (un objeto Throwable).

 

 

Este programa lee un fichero (fichero.txt), y lee su contenido en forma  de números.

 

 

 

Si alguno de  los  números leídos  es  negativo, lanza  una  excepción MiExcepcion. Además gestiona la excepción IOException, que  es una  excepción de  las que  Java incluye  y que se lanza  si hay algún problema en una operación de entrada/salida.

 

 

Ambas  excepciones son  gestionadas, imprimiendo su  contenido (cadena de  error)

 

por pantalla.

 

// Creo una excepción personalizada class MiExcepcion extends Exception {

 

MiExcepcion(){

 

super(); // constructor por defecto de Exception

 

}

 

MiExcepcion( String cadena ){

 

super( cadena ); // constructor param. de Exception

 

}

 

}

 

 

// Esta clase lanzará la excepción class Lanzadora {

void lanzaSiNegativo( int param ) throws MiExcepcion {

 

if ( param < 0 )

 

throw new MiExcepcion( “Numero negativo” );

 

}

 

}

 

class Excepciones {

 

public static void main( String[] args ) {

 

// Para leer un fichero

 

Lanzadora lanza = new Lanzadora(); FileInputStream entrada = null;

int leo;

 

try {

 

entrada = new FileInputStream( “fich.txt” ); while ( ( leo = entrada.read() ) != -1 ) lanza.lanzaSiNegativo( leo ); entrada.close();

System.out.println( “Todo fue bien” );

 

} catch ( MiExcepcion e ){ // Personalizada

 

System.out.println( “Excepción: ” + e.getMessage() );

 

} catch ( IOException e ){ // Estándar

 

System.out.println( “Excepcion: ” + e.getMessage() );

 

} finally {

 

if ( entrada != null )

 

try {

 

entrada.close(); // Siempre queda cerrado

 

} catch ( Exception e ) {

 

System.out.println( “Exception: ” + e.getMessage() );

 

}

 

System.out.println( “Fichero cerrado.” );

 

}

 

}

 

}

 

 

La salida  de este programa, suponiendo un número negativo sería:

 

 

 

Excepción: Numero negativo

 

Fichero cerrado

 

 

 

En el caso de que no hubiera ningún número negativo sería:

 

 

 

Todo fue bien

 

Fichero cerrado

 

 

 

En el caso de que se produjese un error  de E/S, al leer el primer número, sería:

 

 

 

Excepción: java.io.IOException

 

Fichero cerrado


Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros

Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Related posts