Está en la página 1de 21

Definición

Excepción:
 Es la indicación de un problema que ocurre
durante la ejecución de un programa.
 El problema ocurre con muy poca frecuencia.

•Las excepciones en Java son objetos de subclases de


Throwable que está definida en el paquete java.lang

•Las excepciones se tienen que capturar y manejar


para que se pueda reanudar la ejecución del programa
Una excepción se lanza cuando el entorno de ejecución se
encuentra una condición de excepción.

Se puede producir por:

Una condición anormal de ejecución ( excepción síncrona)


detectada por la JVM.

La ejecución del programa detecta una instrucción throw.

Un error interno de la JVM ( excepción asíncrona) o la llamada al

método stop () de la clase Thread.


Cuando se lanza una excepción:

Se crea un objeto excepción que desciende de la clase Throwable o


de alguna de sus subclases.

Myexception me= new Myexception (“Mi excepcion mensaje”);

Se detiene el flujo normal de ejecución y se lanza una referencia al


objeto excepción creado.

Throw me;

La excepción deberá ser capturada (Cath) y gestionada en el propio


método en algún otro lugar

Al lanzar una excepción el método termina de inmediato, sin devolver


ningún valor.

Solamente en el caso que se incluya los bloques try/catch/finally


Tipo de excepciones
Excepciones explícitas: Excepciones implícitas:

· Derivan de Exception (no de · Derivan de


RuntimeException). RuntimeException.

· Indican un error externo a la · Indican un error de


aplicación. programación.

· Si se lanzan es obligatorio · No se declaran: se corrigen.


declararlas.
· Se pueden atrapar.
· Si se invoca un método que En caso contrario finaliza la
las lanza, es obligatorio
atraparlas o declararlas. aplicación.
Jerarquía de excepciones
Error
(AWTError, LinkageError, ThreadDeath, VirtualMachineError)

Exception
ClassNotFoundException, CloneNotSupportedException,
DataFormatException,
GeneralSecurityException, IllegalAccessException, IOException,
NoSuchFieldException, NoSuchMethodException,
PrinterException.

RuntimeException
ArithmeticException, ArrayStoreException,
CannotRedoException,
CannotUndoException, ClassCastException,
EmptyStackException,
IllegalArgumentException, IndexOutOfBoundsException,
NullPointerException
Jerarquía de excepciones

verificadas
checked

No
verificadas
unchecked
Jerarquía de excepciones
 Todas las excepciones descienden de la clase Throwable, la
cual se divide en dos subclases:
Las clases derivadas de Error Las derivadas de Exception menos las
describen errores internos de la RuntimeExeption deben ser verificadas
JVM e indican errores serios que checked por el compilador
normalmente la aplicación no
debería intentar gestionar. No El código que genera la excepción debe
verificadas - unchecked proporcionar la cláusula throws que
contenga el tipo de excepción verificada
Tampoco deberían ser lanzadas después de su lista de parámetros y antes
por las clases del usuario. de su cuerpo
No son atrapadas en el cuerpo del método.
Estas excepciones rara vez
ocurren, y cuando así sea, lo Sino que el código que genera la excepción
único que se puede hacer es debe envolverse en un bloque try
intentar cerrar el programa sin Debe proporcionarse un manejador catch
perder datos. para el tipo de excepcion verificada.
Cláusula Try
Cuando un método guarda una excepción se asume que
esta será capturada y tratada.

Esa captura se produce en la región guardada.


Cualquier método que pueda producir una excepción deberá
introducirse en una región guardada.

El bloque try debe “envolver” cualquier código o invocación a un


método que lanze una excepción.

try{
// Código que produce una excepción
}
Cláusula catch

Los distintos tipos de excepción se gestionan mediante un controlador


de excepciones.

Los controladores aparecen después del bloque try y se identifican


mediante la palabra clave catch.

 Cada controlador es un pequeño método que toma un único


argumento de un tipo concreto que corresponde con el tipo de
excepción capturada.

try{
...
}catch(TipoExcepción1 idExcepción1){
//Tratamiento de la excepción TipoExcepción1
}
catch(TipoExcepción2 idExcepción2){
//Tratamiento de la excepción TipoExcepción2
El entorno de ejecución buscará la cláusula catch cuyo tipo de
argumento coincida con la excepción producida.

 Cuando la encuentra ejecuta las instrucciones del bloque.

 En ocasiones el bloque puede modificar las condiciones que han


producido el error y volver a ejecutar el método.

 En otras ocasiones simplemente se podrá informar del error y


detener la ejecución.
bloque finally
 Puede haber ocasiones en que se desea
realizar alguna operación tanto si se
producen excepciones como si no. Bloque finally.
 Dichas operaciones se pueden situar
dentro de un, de Aparece después de
la siguiente forma: los gestores de
excepciones.
try{
// Operaciones con posibles excepciones Proporciona una
} sección de código
catch( <tipoDeExcepcion> ref ){ que se ejecutará se
// Tratamiento de la excepción produzca o no la
} excepción
finally{
// Operaciones comunes
}
 Super clase de todas las clases de
exception
 Dos tipos heredables
› Error: Errores del sistema y de compilación
 ( no se capturan salvo ocasiones especiales)
› Excepción : Tipo básico que puede lanzarse
desde cualquier método de java
 Es utilizado para capturar y crear nuevas
excepciones
 Nombre Clase()
› Genera un objeto con un
Constructores mensaje de error nulo

 NombreClase (String
mensaje)
› Genera un objeto de la
clase con un mensaje
descriptivo
 String getmessage()
› Muestra mensaje asociado a la
excepción
Métodos
 String toString (String mensaje)
› Devuelve una descripción del
objeto en forma de cadena.

 void print StackTrace (PrintStream)


› Imprime el objeto y la traza de
llamadas lanzada
public class Par{
int x, y;
public Par (int x, int y){
this.x = x; La excepción se
this.y = y; produce en el
} método divide ()
public int divide(){ de la clase Par,
try{ dentro del bloque
retun x/y; try.
}
catch(AritmeticException e) { Esta excepción es
return 999999; capturada en el
} bloque catch y el
código escrito es
el ultimo en ser
public class Division { ejecutado.
public static void (String [] Args) {
Par par = new Par (100,0);
int res =par.divide();
System.out.println(“el cociente es: “ + res);
}
}
public class Par{
int x, y;
public Par (int x, int y){
this.x = x; El objeto excepción
this.y = y; es referenciado al
} interior del bloque
public int divide(){ catch por medio de
try{ la variable e.
retun x/y;
} Se invoca el método
catch(AritmeticException e) { printStackTrace() ,
e.printStackTrace(); sobre el objeto de la
return 999999; excepción
}

public class Division {


public static void (String [] Args) {
Par par = new Par (100,0);
int res =par.divide();
System.out.println(“el cociente es: “ + res);
}
}
CREACIÓN DE EXCEPCIONES
.
Si se necesita notificar En la práctica,
algún error no normalmente derivará:
contemplado en Java se  de RuntimeException si
puede crear una nueva se desea notificar un
clase de Excepción.
error de programación.
 La única condición es  de Exception en
que la clase derive de la cualquier otro caso.
clase Throwable o de
alguna derivada
Clausula Throws.
Si un método es capaz de causar una excepción que él
mismo no puede gestionar, ha de especificarse el
comportamiento de manera que los métodos que llamen
a ese primer método puedan protegerse contra ese
excepción.

Para ello se incluye una cláusula throws en la


declaración de método.
cláusula throws
 Proporciona un listado de los tipos de excepciones que el
método puede lanzar.

 Esto es necesario para todas las excepciones, excepto las


del tipo Error o RuntimeException, o cualquiera de sus
subclases. Si no se declaran se provoca un error de
compilación.

 Esta es la forma general de una declaración de método


que incluye una sentencia thows:

tipo nombre_método (argumentos) throws lista_excepciones


{
// cuerpo del método
}
Programa con la cláusula throws
class ThrowsDemo{ El método throwuno
debe declarar la
static void throwuno() throws legalAccesoExcepcion {
excepción que
System.out.println("Estoy en throwuno"); puede lanzar.
throw new IlegalAccesoExcepcion("Demostración");
} En el programa
public static void main (String args[]){ principal debe
try {
throwuno(); haber un bloque
try/catch
}
catch (IlegatAccesoExcepcion e) {

System.out.println("Excepción capturada." + e);


}
}
}
La salida de este programa será:

Estoy en throwuno
Excepción capturada. java.lang.IlegalAccesoExcepcion:
Demostración
Ejercicio Clase Fracción

 Diseña e implementa una clase Fracción que permite


crear fracciones (numerador y denominador enteros),
con métodos para sumar, restar, multiplicar y dividirlas.
 Crea una excepción FraccionException que se lance
siempre que en una operación de fracción se produzca
un error, a saber:
· Creación de una fracción con denominador cero.
· División de una fracción entre otra con numerador cero.
· Cualquier operación que incluya una fracción con
denominador cero.
 Hacer que cada operación crítica lance esta excepción
si se produce, con un mensaje indicativo
 del tipo de error (mensaje incluido en la excepción, no
salida a pantalla!). Probar la clase.

También podría gustarte