CPJ B Ejercicio Excepciones 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

www.globalmentoring.com.

mx
Crear un ejercicio para uso más avanzado de excepciones. Al
finalizar deberemos observar lo siguiente:

www.globalmentoring.com.mx
www.globalmentoring.com.mx
Vamos a crear el proyecto :

www.globalmentoring.com.mx
Vamos a crear una clase:

www.globalmentoring.com.mx
Vamos a crear una clase:

www.globalmentoring.com.mx
Vamos a crear una clase:

www.globalmentoring.com.mx
Vamos a crear una clase:

www.globalmentoring.com.mx
Vamos a crear una clase:

www.globalmentoring.com.mx
Archivo AccesoDatosEx.java:
package excepciones;

public class AccesoDatosEx extends Exception{

public AccesoDatosEx(String mensaje){


super(mensaje);
}
}

www.globalmentoring.com.mx
Archivo EscrituraDatosEx.java:
package excepciones;

public class EscrituraDatosEx extends AccesoDatosEx{

public EscrituraDatosEx(String mensaje) {


super(mensaje);
}
}

www.globalmentoring.com.mx
Archivo LecturaDatosEx.java :
package excepciones;

public class LecturaDatosEx extends AccesoDatosEx{

public LecturaDatosEx(String mensaje) {


super(mensaje);
}

www.globalmentoring.com.mx
Archivo AccesoDatos.java :
package datos;

import excepciones.AccesoDatosEx;

public interface AccesoDatos {

public abstract void insertar() throws AccesoDatosEx;

public abstract void listar() throws AccesoDatosEx;

public abstract void simularError(boolean simularError);


}

www.globalmentoring.com.mx
Archivo ImplementacionMySql.java :
package datos;
import excepciones.*;

public class ImplementacionMySql implements AccesoDatos{


private boolean simularError;

@Override
public void insertar() throws AccesoDatosEx {
if (simularError) {
throw new EscrituraDatosEx("Error de escritura de datos");
} else {
System.out.println("Insertar desde MySql");
}
}

@Override
public void listar() throws AccesoDatosEx {
if (simularError) {
throw new LecturaDatosEx("Error de lectura de datos");
} else {
System.out.println("Listar desde MySql");
}
}

public boolean isSimularError() {


return simularError;
}

@Override
public void simularError(boolean simularError) {
this.simularError = simularError;

}
} www.globalmentoring.com.mx
Archivo ManejoExcepciones2.java (Parte 1):
package manejoexcepciones2;
import datos.*;
import excepciones.*;

public class ManejoExcepciones2 {

public static void main(String[] args) {


AccesoDatos datos = new ImplementacionMySql();
//Cambiamos el estado a simularError = true
datos.simularError(true);
ejecutar(datos, "listar");

//Cambiamos el estado a simularError = false


datos.simularError(true);
System.out.println("");
ejecutar(datos, "insertar");
}

www.globalmentoring.com.mx
Archivo ManejoExcepciones2.java (Parte 2):
private static void ejecutar(AccesoDatos datos, String accion) {
if ("listar".equals(accion)) {
try {
datos.listar();
}
//Si se van a procesar varias excepciones de la misma jerarquia
//siempre se debe procesar primero la excepcion de menor jerarquia
//y posteriormente la de mayor jerarquia
catch (LecturaDatosEx ex) {
System.out.println("Error lectura: Procesa la excepcion mas especifica de lectura de datos");
} catch (AccesoDatosEx ex) {
System.out.println("Error Acceso datos: Procesa la excepcion mas generica de acceso a datos");
} catch (Exception ex) {
System.out.println("Error general");
}
finally {
System.out.println("Procesar finally es opcional, siempre se ejecutara sin importar si hubo error o no");
}
} else if ("insertar".equals(accion)) {
try {
datos.insertar();
} catch (AccesoDatosEx ex) {
System.out.println("Error acceso datos: Podemos procesar solo la excepcion mas generica");
}
finally{
System.out.println("Procesar finally es opcional, siempre se ejecutara sin importar si hubo error o no");
}
}
else
System.out.println("No se proporciono ninguna accion conocida");
}
} www.globalmentoring.com.mx
El resultado es como sigue:

www.globalmentoring.com.mx
• Probar con el modo debug del IDE y verificar paso a paso.

• Probar con distintos valores y lanzar excepciones padres e


hija para así comprobar como funciona el manejo de
excepciones según la jerarquía de excepciones que hemos
declarado.

www.globalmentoring.com.mx
• Con este ejercicio hemos puesto en práctica conceptos más
avanzados de excepciones en Java.

• Pudimos observar cómo trabajar con excepciones de tipo


Exception, también es posible convertir estas excepciones a
tipo RuntimeException, simplemente extendiendo de esta
clase en lugar de la clase Excepcion. Esto puede quedar
como un buen ejercicio para que observen cómo el
compilador NO nos obliga a procesar las excepciones de tipo
RuntimeException y así tener un código más limpio.

www.globalmentoring.com.mx
Por: Ing. Ubaldo Acosta

www.globalmentoring.com.mx

También podría gustarte