0% encontró este documento útil (0 votos)
34 vistas25 páginas

Manejo de Excepciones en Java POO

Este documento explica el concepto de excepciones en programación orientada a objetos. Detalla cómo las excepciones permiten indicar y manejar errores de forma más estructurada que devolver valores de error. Explica cómo crear clases de excepción personalizadas, lanzar excepciones desde métodos y tratarlas mediante bloques try-catch o delegándolas al método invocador.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas25 páginas

Manejo de Excepciones en Java POO

Este documento explica el concepto de excepciones en programación orientada a objetos. Detalla cómo las excepciones permiten indicar y manejar errores de forma más estructurada que devolver valores de error. Explica cómo crear clases de excepción personalizadas, lanzar excepciones desde métodos y tratarlas mediante bloques try-catch o delegándolas al método invocador.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Excepciones

Programación Orientada a Objetos


(POO)
Excepciones

03/14/202 2
4
¿Cual es el problema con este
método?

public double dividir(int numerador, int denominador)


{
return numerador/denominador;
}
¿Qué regresa el método si se pasa como argumentos (3, 0)?

public long factorial(int n) {


if (n==0)
return 1;
return n * factorial(n - 1);
}

¿Qué regresa el método si se pasa como argumento -3?


03/14/202 3
4
Posible solución

public long factorial(int n) {


if (n < 0)
return -1;

if (n == 0)
return 1;
return n * factorial(n - 1);
}

 Un valor regresado por el método esta indicando un código de


error.
 ¿Qué pasa si un desarrollador no sabe que un factorial no puede ser
negativo?
03/14/202 4
4
Excepciones

 Excepción: evento anormal o excepcional que requiere un procesamiento


especial.
 La mayoría de lenguajes OO (Java, C++, C#, Python, etc.) incluyen
mecanismos explícitos de manejo de excepciones.
 En lugar de retornar un valor indicado un error, «lanzan» una excepción para
indicar esta situación.
 El código que invoca al método donde la excepción es lanzada puede tomar
acciones para «remediar» el problema.

03/14/202 5
4
Solución recomendada

public long factorial(int n) throws FactorialException {


if (n < 0)
throw new FactorialException("factorial indefinido
para numero negativo") ;

if (n==0)
return 1;
return n * factorial(n - 1);
}

 El método «lanza» una excepción para indicar que el evento


excepcional ocurrió-

03/14/202 6
4
Las Excepciones en Java
 En Java las excepciones son objetos.
 Cuando una situación anormal (error) ocurre, el método crea un
objeto de tipo excepción y lo «lanza».
 Esta instancia contiene información acerca del problema que acaba
de ocurrir.
 Esta información incluye el tipo de error y el estado del programa en
el momento en que ocurre.
 En Java las clases para representar excepciones están organizadas
en una jerarquía.
 Es posible crear sus propias clases de excepciones.

03/14/202 7
4
Solución recomendada

public long factorial(int n) throws FactorialException {


if (n < 0)
throw new FactorialException("factorial indefinido
para numero negativo") ;

if (n==0)
return 1;
return n * factorial(n - 1);
}

 La excepción que se lanza es una instancia de la clase


FactorialException

03/14/202 8
4
Jerarquía Excepciones en Java

Throwable

Error Exception

RuntimeException

NullPointerException IOException
IndexOutOfBoundException SQLException
ClassCastException MalformedURLException
… …
03/14/202 9
4
Las Excepciones en Java
 Toda excepción en Java contiene
 Un atributo de tipo String para almacenar el mensaje de error.
 Un método getMessage() que permite acceder a este mensaje.
 Es posible personalizar el mensaje de una excepción al momento
de la creación de la instancia:

FileNotFoundException exc = new FileNotFoundException("El


archivo " + nombreArc + " no fue encontrado");
03/14/202 10
4
Crear una clase de Excepción
 Heredar de la clase java.lang.Exception

public class FactorialException extends Exception {

public FactorialException(String mensaje) {


super(mensaje);
}

03/14/202 11
4
Lanzar una Excepción

 Es responsabilidad del método lanzar la excepción cuando detecta una


anomalía.
 Cuando un método desea lanzar una excepción debe declarar esta intención
usando la palabra clave throws
 Para lanzar una excepción el método debe:
 Crear una instancia de un tipo de excepción declarado en el método.
 Lanzar la excepción usando la palabra clave throw

03/14/202 12
4
Lanzar una Excepción

public long factorial(int n) throws FactorialException {


if (n < 0)
throw new FactorialException("factorial indefinido
para numero negativo") ;

if (n==0)
return 1;
return n * factorial(n - 1);
}

03/14/202 13
4
Propagación de excepciones
 Si una excepción es lanzada la JVM interrumpe la ejecución normal
del programa.
 La excepción es propagada del código llamado (método invocado)
hacia el código que hace la invocación (método invocador).
 Si se encuentra un bloque try-catch la excepción es tratada en ese
bloque y la ejecución continua normalmente después de ese
bloque.
 Si no encuentra un bloque try-catch, la excepción es propagada
hacia el siguiente método invocador.
 Si llega al método main sin encontrar quien la trate el programa
termina y la excepción se muestra en la consola.

03/14/202 14
4
Propagación de excepciones

Principal
main( )

Alfa Beta
m1( ) m2( )

Gama
m3( )

03/14/202 15
4
Tratamiento de excepciones

 Las excepciones se dividen entre controladas y no controladas.


 Para las excepciones controladas el desarrollador esta obligado a tratarlas.
 Tratar una excepción se realiza de dos formas:
 Delegando al método invocador el tratamiento.
 Gestionando la excepción dentro del propio método.
 Para delegar la excepción se agrega la declaración con la palabra clave
throws
 Para gestionar la excepción se utiliza la estructura try/catch/(finally)

03/14/202 16
4
Delegación

Principal
main( )

Alfa Beta
m1( ) *m2( )

Gama
*m3( )
El método m2 delega el
tratamiento a aquellos
métodos que lo invoquen
03/14/202 17
4
Delegando al método invocador
public long factorial(int n) throws FactorialException {

}

public void testDelegar(int n) throws FactorialException {


System.out.println("El factorial de " + n + " es:");
long fact = factorial(n);
System.out.println(fact);
System.out.println("La ejecucion continua aqui");
}

03/14/202 18
4
Delegación de la excepción

Principal1
*main( )

CalculoFactorial CalculoFactorial
*testDelegar( ) *factorial( )

03/14/202 19
4
Gestionando Excepciones

ESTRUCTURA TRY-CATCH-FINALLY
 Try: código a vigilar, puede lanzar una excepción.
 Catch: código que tratara la excepción si esta ocurre.
 Finally: código de limpieza, siempre se ejecuta.

try {
// Código a vigilar
} catch (TipoExcepcion e) {
// Código para tratar la excepción
} finally {
// Código de limpieza
}
03/14/202 20
4
Gestionando la excepción
public long factorial(int n) throws FactorialException {

}

public void testGestionar(int n) {


System.out.println("El factorial de " + n + " es:");
try {
long fact = factorial(n);
System.out.println(fact);
} catch (FactorialException e) {
System.out.println("Problema " + e.getMessage());
}
System.out.println("La ejecucion continua aqui");
}

03/14/202 21
4
Gestión de la excepción

Principal2
*main( )

CalculoFactorial CalculoFactorial
testGestionar( ) *factorial( )

03/14/202 22
4
Estructura try-catch-finally

 Un bloque puede capturar diferentes tipos de excepciones.


 Cuando se captura una excepción de un tipo dado se
gestionan también todos sus subtipos.
 Solo existe una sección finally

try {
// Codigo a vigilar
} catch (TipoExcepcion1 e) {
// Codigo para tratar la excepcion TipoExcepcion1
} catch (TipoExcepcion2 e) {
// Codigo para tratar la excepcion TipoExcepcion2
} finally {
// Codigo de limpieza 03/14/202 23
} 4
Ventajas del tratamiento de excepciones

 Separar el código «normal» del código dedicado al tratamiento


de situaciones excepcionales (errores).
 Una separación y clasificación de los tipos de errores que se
pueden presentar.
 Poder propagar errores en la pilla de llamados de los métodos.

03/14/202 24
4
"Para que pueda surgir lo posible. Es preciso intentar una y otra
vez lo imposible". (Hermann Hesse)

También podría gustarte