Excepciones
Situaciones anómalas que aparecen durante la ejecución de un
programa.
·
Cuando aparece una condición excepcional se crea
un objeto Throwable que se envía al método que la ha generado
Su gestión permite la detección y corrección de errores en
ejecución.
·
Simplifican los programas ya que se diferencia
el código normal del código de tratamiento de errores.
·
Se crean programas mas robustos ya que en muchos
casos si no se trata la excepción el programa no compila.
·
Sólo se deben usar cuando no se puede resolver la
situación anómala directamente en ese contexto.
Dos tipos
de situaciones excepcionales.
Excepciones:
Situaciones mas o menos habituales que impiden completar la ejecución
correcta del código. Generalmente el programador debe proporcionar el código
que las trate o gestione.
·
Ejemplos
Ø Error en el
código o en los datos.
Ø Uso inadecuado
de un método.
Errores
Representan situaciones de error normalmente no recuperables.
El programador normalmente no tiene que proporcionar un tratamiento para ellas.
·
Ejemplos:
No se puede
localizar y cargar una clase, se agota la memoria.
RuntimeException:
Excepciones que se dan durante la ejecución del programa.
Tipos de excepciones
·
Predefinidas en el sistema
Se lanzan automáticamente cuando se realiza alguna operación
no valida.
·
Acceso a un objeto que no existe.
·
Acceso a una posición de un array que no existe.
·
División por cero.
·
Generadas por el programador
Ø El programa
explícitamente genera una excepción al detectar una situación de error que no se
puede resolver en ese contexto.
Ø Útil en
situaciones de prueba y depuración.
Gestion de excepciones
Para gestionar excepciones hay que insertar el código donde
se puede dar dentro de un bloque “try”. Se crea una lista de bloques “catch” adyacente, uno por cada posible excepción.
try {
// bloque
de código donde puede producirse una excepción
}catch( TipoExcepción1 e ) {
// gestor
de excepciones para TipoExcepción1
// se
ejecuta si se produce una excepción de tipo TipoExcepción1
}catch( TipoExcepcion2 e ) {
// gestor
de excepciones para TipoExcepción2
throw(e); // se puede volver a lanzar la excepción propagar
} finally {
// bloque
de código que se ejecuta siempre, haya o no excepción
}