Bien vamos a continuar con nuestra aplicación de manejo de excepciones 2
sobre sus paquetes.
Vamos a dar clic derecho nio ya la clase y vamos a crear la clase.
Manejo excepciones 2 y la depositamos en el paquete de texto y damos clic en Finalizar quitamos estos
comentarios agregamos un método main y vamos a crear la siguiente variable.
Una variable de tipo acceso datos que es el tipo de interface y lo vamos a asignar a un objeto de tipo
implementación Maisí.
Importamos estas clases
debido a que vamos a usar varias clases ponemos punto asterisco y ya tenemos acceso a todas estas clases.
Ahora vamos a cambiar el estado del simulador error verdadero así que mandamos a llamar el método simular
error y le ponemos el valor de verdadero el valor de True.
Ahora vamos a crear un método para simular la ejecución de alguna operación utilizando algunos de los
objetos que implementan la interface ya sea la implementación de Maisí o de Oracle así que vamos a crear
el método ejecutar le vamos a pasar el objeto de datos y le pasamos la operación que queremos ejecutar.
En este caso queremos ejecutar la operación de listar y vamos a crear este método agregamos el método
Privat Static no regresa nada es de tipo Void se llama ejecutar y va a recibir un objeto de tipo interface
para hacerlo lo más genérico posible.
También se llama datos y recibe un string con la acción a ejecutar
y ahora lo que hacemos es que vamos a comprobar el tipo de acción que se quiere ejecutar.
Así que preguntamos si lo que se desea es ejecutar la acción de listar si listar es igual a la acción
que se ha proporcionado entonces se va a ejecutar cierto código.
De lo contrario preguntamos si se desea ejecutar por ejemplo la acción de insertar si la acción es igual
a insertar entonces se va a ejecutar cierto código de lo contrario si no coincide en ninguno de los
otros casos Entonces mandamos a imprimir el mensaje no se proporcionó ninguna acción conocida bien y
ahora en la parte del código para listar lo que vamos a hacer es mandar a llamar.
El método de listar del objeto que hemos recibido y en el caso de insertar vamos a hacer lo mismo se
manda llamar el método de insertar ya que se ha seleccionado esta acción.
Sin embargo debido a que estos métodos pueden arrojar una excepción entonces el compilador nos está
indicando que debemos de reportar esta excepción o envolverla en un bloque y cazzo.
En este caso vamos a envolverla para poner en práctica lo que hemos hecho hasta el momento pero también
si no queremos envolverla en un bloque troikas simplemente podríamos reportarla bien así que envolvemos
esta acepción en un bloque Cazzo y podemos observar que el método de listar ya está envuelto en un bloque
y cazzo quitamos esta línea de código y podemos observar que la excepción que se está procesando es
la excepción padre acceso datos exception ya que es la excepción que indicamos en los métodos de la
interfase es la excepción que se va a reportar pero internamente estos métodos de insertar y de listar
como podemos observar arrojan un tipo de excepción hija bien se podría manejar una sola acepción pero
es común en Java que tengamos una jerarquía de clases y así poder separar y clasificar cada una de las
clases de excepción de mejor manera.
Ahora si revisamos la implementación por ejemplo de mi ciclo de oración en el método de listar
podemos observar que se está arrojando internamente la excepción de lectura datos exception así que
internamente también aquí en el jazz podríamos procesar no la acepción genérica sino podríamos empezar
procesando la decepción de menor jerarquía esto debido a que un bloque try catch puede procesar varios
bloques Gazza y al final podemos agregar el bloque final.
Así que vamos a agregar varios bloques cazzo pero si vamos a procesar varias excepciones ya están relacionadas
entre ellas.
Entonces primero debemos de procesar la decepción de menor jerarquía es decir las decepciones hijas.
Así que agregamos lo siguiente vamos a agregar otra excepción hija y la primera excepción que vamos
a tratar de procesar cuando mandemos a llamar.
El método de listar es lectura datos exception vamos a importar esta clase
importamos todo el paquete para que podamos utilizar cualquiera de estas clases.
Estas clases ya no los vamos a utilizar vamos a quitarlas.
Bien así que podemos observar que en dado caso de que este método de listar lanza alguna excepción primero
vamos a comenzar procesando las decepciones de menor jerarquía y si se ha procesado esta excepción podemos
mandar un mensaje error de lectura.
Esto es debido a que si invertimos y ponemos primero la excepción de mayor jerarquía entonces ya no
va a procesar las excepciones de menor jerarquía por lo tanto si vamos a procesar varias excepciones
como hemos comentado primero debemos poner las excepciones de menor jerarquía y posteriormente si estamos
procesando la excepción padre entonces ya no fue un error tan detallado como el error de lectura sino
simplemente es un error de acceso a datos.
Pero ya no tenemos el detalle de esa opción de lectura sino solamente un error de acceso a datos es
un error más genérico e incluso podríamos continuar procesando excepciones.
Ahora podríamos procesar una excepción todavía más genérica como lo es la excepción de tipo exception
esto en caso de que no se haya lanzado ninguna de esas excepciones sino que sea lanzado otro tipo de
decepción y en este caso indicamos que ocurrió un error general pero ya no tenemos el detalle si fue
de acceso a datos o si fue lectura de datos y además como parte de esta revisión podemos agregar el
bloque finalice este bloque final y siempre se va a ejecutar independientemente de que ocurra algún
error o no sin embargo procesar Farinelli es opcional
es opcional pero siempre se va a ejecutar así que simplemente es para que podamos observar cómo es que
estamos procesando cada una de las excepciones.
Bien podríamos quedarnos por ejemplo con la acepción más genérica o por ejemplo también con la excepción
más específica ya es decisión nuestra qué tipo de acepción queremos procesar.
Si a nivel más genérico o más detallado y también el bloque final es opcional podemos utilizarlo o no.
Normalmente se utiliza este bloque final para cerrar por ejemplo alguna conexión a base de datos que
tengamos abierta pero es opcional utilizar este bloque de código bien vamos a hacer lo mismo en la llamada
al método de listar.
Vamos a envolverlo en un bloque catch
y en este caso vamos a dejarlo genérico únicamente vamos a procesar la acepción de acceso datos exception
y mandamos el mensaje esa opción de acceso a datos agregamos el bloque final y
de igual manera procesar este bloque es opcional
quitamos estas líneas de código y en cada uno de los casos podemos mandar a imprimir el mensaje o por
ejemplo la pila decepciones como lo hemos hecho anteriormente.
En este caso simplemente vamos a mandar a imprimir la pila
y el iDEN nos marca un warning.
En este caso el warning nos indica que debemos de remover la impresión del esta actuáis pero si lo mandamos
a la consola
entonces ya nos quita este warning.
Simplemente estamos indicando que la excepción en dado caso de que ocurra se mande a la consola
hacemos lo mismo en este método
y con eso ya tenemos todo el código que necesitamos.
Como hemos comentado en este método de insertar también podemos procesar cada una de las excepciones
desde la más específica hasta la más genérica.
Sin embargo en este caso vamos a dejarlo simplemente con este código para que también vean la diferencia
pero ya es decisión nuestra.
Qué tipo de opciones queremos procesar.
Así que con esto mandamos a llamar el método ejecutar hemos indicado que si vamos a simular un error
por lo tanto se debería de lanzar una excepción de tipo lectura datos exception cuando mandemos a llamar.
El método de listar así que guardamos cambios y ejecutamos
y podemos ver que hemos entrado al detalle de error lectura ya no se ha ejecutado ningún otro bloque
catch sino que en este caso únicamente se ejecutó este bloque cache y de aquí pasa directamente al bloque
final.
De todas maneras cualquier detalle con esto pueden ejecutarlo paso a paso pero básicamente lo que hizo
fue que entró a este detalle ya que es el tipo de sección que se lanzó.
Se ejecuta estas líneas de código y de aquí pasa directamente al bloque final y es todo lo que hace
este código así que se manda el mensaje error de lectura se manda imprimir el error de lectura de datos
y la pila de excepciones indicando dónde está el problema
bien así que ya está funcionando correctamente nuestra simulación de error.
Si cambiamos por ejemplo la bandera a falso para que no se simule un error entonces ya no hay ningún
problema en ejecutar el método de listar se manda el mensaje de listar desde igual y se ejecuta el bloque
final.
Como hemos comentado el bloque final siempre se va a ejecutar independientemente que se lance una excepción
o no cualquier duda pueden ejecutar eso también paso a paso bien y por último vamos a poner a prueba
la implementación de Oracle
creamos la variable datos dos
creamos el objeto de implementación de Oracle
y la variable datos los indicamos que sí vamos a simular un error y mandamos a llamar el método de ejecutar
le pasamos la variable datos dos y vamos a simular el método de insertar y punto y coma.
Y con eso ya tenemos todo nuestro código guardamos cambios y ejecutamos
y podemos ver que en este caso estamos simulando un error al momento de insertar un registro simulando
la inserción de un registro se manda a acepción de acceso datos ya que es la acepción más genérica que
hemos procesado en este caso no procesamos la acepción más específica pero bien podríamos hacerlo también
y posteriormente se manda el mensaje error de escritura de datos y la pila de excepciones también se
procesa lo que finalice independientemente de que ocurra algún error o no. Ahora si cambiamos la bandera
para que no se lance ningún error guardamos cambios y ejecutamos y podemos observar que se procesa correctamente
el método insertar desde Oracle y se ejecuta el bloque final así que con esto hemos puesto en práctica
cada uno de los conceptos que más vamos a estar trabajando.
Cuando manejamos el tema de secciones en Java bien eso es todo esta elección y nos vemos en el siguiente
vídeo.
Saludos.