gestión de errores en java

16

Upload: eccutpl

Post on 20-Jun-2015

17.043 views

Category:

Technology


0 download

DESCRIPTION

Manejo de excepciones y gestión de errores en Java

TRANSCRIPT

Page 1: Gestión de errores en Java
Page 2: Gestión de errores en Java

Una excepción o un error es un evento que ocurre durante la ejecución de un programa y detiene el flujo normal de la secuencia de instrucciones de ese programa.

Las excepciones en Java están destinadas a la detección y corrección de errores. Si hay un error, la aplicación debe lanzar una excepción (throw) que a su vez debería capturar (catch) y resolver la situación de error, o poder ser tratada finalmente (finally) por un gestor por defecto u omisión.

Las excepciones son formas muy limpias de manejar errores y problemas inesperados

en la lógica del programa. Gestión de

Errores

Page 3: Gestión de errores en Java

Exception: Conjunto de excepciones que el programa debe capturar y resolver.

Subclases

RuntimeException, ArithmeticException, IndexOutOfBoundsException, NullPointerException, etc.

Gestión de Errores

Error: Son fallos de tipo catastrófico, originan la parada del programa.

Subclases

AWTError, LinkageError, ThreadDeath, VirtualMachineError, etc.

Page 4: Gestión de errores en Java

Los nombres de las excepciones indican la condición de error que representan. Las siguientes son las excepciones predefinidas más frecuentes que se pueden encontrar:

ArithmeticExceptionLas excepciones aritméticas son

típicamente el resultado de división por 0:int i = 12 / 0;

Gestión de Errores

Page 5: Gestión de errores en Java

Gestión de

Errores

IncompatibleClassChangeExceptionEl intento de cambiar una clase

afectada por referencias en otros objetos, específicamente cuando esos

objetos todavía no han sido recompilados.

ClassCastException El intento de convertir un

objeto a otra clase que no es válida.

NullPointerException Se produce cuando se intenta

acceder a una variable o método antes de ser definido.

Page 6: Gestión de errores en Java

Gestión de

Errores

NegativeArraySizeException Puede ocurrir si hay un error

aritmético al cambiar el tamaño de un array.

NoClassDefFoundException Se referenció una clase que el

sistema es incapaz de encontrar.

ArrayIndexOutOfBoundsExceptionSe genera al intentar acceder a un

elemento de un array más allá de los límites definidos inicialmente para ese

array.

Page 7: Gestión de errores en Java

Gestión de

Errores

UnsatisfiedLinkException Se intenta de acceder a un método

nativo que no existe. InternalException

Este error se reserva para eventos que no deberían ocurrir. Por definición, el

usuario nunca debería ver este error y esta excepción

no debería lanzarse.

Page 8: Gestión de errores en Java

También el programador puede lanzar sus propias excepciones, extendiendo la clase System.exception.

Por ejemplo, considérese un programa cliente/servidor. El código cliente se intenta conectar al servidor, y durante 5 segundos se espera a que conteste el servidor. Si el servidor no responde, el servidor lanzaría la excepción de time-out

Gestión de Errores

Page 9: Gestión de errores en Java

Gestión de

Errores

class ServerTimeOutException extends Exception {}public void conectame( String nombreServidor ) throws Exception { int exito; int puerto = 80; exito = open( nombreServidor,puerto ); if( exito == -1 ) throw ServerTimeOutException; }

Excepciones Predefinidas

Page 10: Gestión de errores en Java

public void encuentraServidor() {try { conectame( servidorDefecto ); catch( ServerTimeOutException e ) { g.drawString( "Time-out del Servidor, intentando alternativa",5,5 ); conectame( servidorAlterno ); }}

Gestión de Errores

Excepciones Propias

Page 11: Gestión de errores en Java

Gestión de

Errores

Las excepciones lanzadas por un método que pueda hacerlo deben recoger en bloque try/catch o try/finally.

tryEs el bloque de código donde se previene que se genere una excepción. El bloque try tiene que ir seguido, al menos, por una cláusula catch o una

cláusula finally.

try { // Sentencias Java

}

Page 12: Gestión de errores en Java

Gestión de

Errores

catchEs el código que se ejecuta cuando se produce la excepción. No hay código alguno entre un bloque try y un bloque catch, ni entre bloques catch. La

sintaxis general de la sentencia catch en Java es la siguiente:

catch( UnTipoTrhowable nombreVariable ) { // sentencias Java

}

Page 13: Gestión de errores en Java

Gestión de

Errores

tryEs el bloque de código que se ejecuta siempre,

haya o no excepción. Este bloque finally puede ser útil cuando no hay ninguna excepción. Es un trozo de código que se ejecuta independientemente de lo

que se haga en el bloque try.

Page 14: Gestión de errores en Java

Gestión de

Errores

throwLa sentencia throw se utiliza para lanzar

explícitamente una excepción. En primer lugar se debe obtener un descriptor de un objeto Throwable, bien mediante un parámetro en una cláusula catch o, se puede crear utilizando el operador new. La

forma general de la sentencia throw es:throw ObjetoThrowable;

Page 15: Gestión de errores en Java

Gestión de

Errores

throwsSi un método es capaz de provocar una excepción que no maneja él mismo, debería especificar este comportamiento, para que todos los métodos que

lo llamen puedan colocar protecciones frente a esa excepción. La palabra clave throws se utiliza para identificar la lista posible de excepciones que un

método puede lanzar.

Page 16: Gestión de errores en Java

Gestión de

Errores

public class ValidacionNumero { public static void main(String[] args) { boolean esNumero = false; int nro = 0; String txtNro = null; do{ txtNro = JOptionPane.showInputDialog("Ingrese un nro. "); try{ nro = Integer.parseInt(txtNro); esNumero = true; }catch(NumberFormatException nfe){ System.out.println("ERROR. No ha ingresado un nro."); } }while(esNumero == false); JOptionPane.showMessageDialog(null, "El nro ingresado fue el: " + nro, "Resultado", JOptionPane.INFORMATION_MESSAGE); System.exit(0); }}.