Mantenimiento de una tabla en Oracle con Java y JSP – Anexo 05 – try – catch.

Capa BD
01. Crear una BD en Oracle.
02. Crear una Tabla con clave primaria.
03. Crear un secuenciador.
04. Implementar sentencias para mantenimiento de la tabla.
05. Crear un package en la BD.
06. Crear un SP con un cursor como parametro de salida.
07. Crear un SP para devolver nombres similares de un campo.

Applicacion Web
08. Crear Un proyecto Web en Java.

Capa modelo
09. Crear Una clase Entidad (una clase simple).
10. Obtener una Conexión hacia la BD.
11. Crear un Statement simple.
12. Crear un PreparedStatement con parametros.
13. Crear un CallableStatement con un cursor como parametro de salida.

Capa Controlador
14. Crear un Servlet Controlador.

Capa Vista
15. Crear una pagina JSP con un formulario.

Anexos
01. Cadena de conexión.
02. Interface connection.
03. Clase OracleDataSource.
04. SQLException.
05. try – catch.
06. RequestDispatcher.

try – catch

Qué es :


Permiten capturar las excepciones y dar una nueva secuencia al flujo del programa en el que se valida la excepcion lanzada.
Estos bloques trabajan con clases descendientes de la interface java.lang.Exception.
Evaluan las excepciones lanzadas por algun objeto como en el caso de los objetos cuyo tipo es alguna clase del paquete java.sql.

Actuan como una generalizacion de la sentencia switch, si comparamos la disposicion de catchs y finally se parecen a los cases y default de esta sentencia.
Pero este parecido es solo en la forma, porque no deben usarse como ifs validadores para cada excepcion que se produzca. Recordemos que una excepcion es una clase que abarca todos los errores previstos que puedan producirse en el transcurso de la ejecucion de un programa y el proposito de estos bloques es manejarlos.

Como se usa :

try {
  getTheFileFromOverNetwork
  readFromTheFileAndPopulateTable
}
catch(CantGetFileFromNetwork) {
  displayNetworkErrorMessage
}

Como funciona :


El pseudocodigo anterior demuestra como se trabaja con excepciones. El código es dependiente de una operación de riesgo y es agrupado en un bloque try, esto es como decir que si la primera operación falla no quiero intentar ejecutar otro código que tambien tengo garantizado que fallara. En el ejemplo del pseudocodigo, no seremos capaces de leer del fichero si no podemos obtener el fichero de la red en primer lugar.

Hay mas

Finally

Aunque try y catch proporcionen un excelente mecanismo para la captura y manejo de excepciones, nos quedamos con el problema de como limpiar el código después de ocurrir una excepción. Ya que la ejecución se sale del bloque try cuando una excepción es lanzada, no podremos ejecutar la parte inferior de limpieza del bloque de código. No seria buena idea colocar la limpieza de nuestro código en cada uno de los bloques catch, veamos porque.
Los manejadores de excepciones es un pobre lugar para colocar la limpieza del código del bloque try porque tendríamos que escribir el mismo código en cada uno de ellos. Si por ejemplo, estableces una conexión de red o abres un fichero en la región vigilada, cada manejador de excepciones tendría que cerrar el fichero o la conexión. Para la solución a este problema Java ofrece el bloque finally.
Un bloque finally encierra el código que siempre ejecutaremos en el mismo punto después del bloque try, se haya o no se haya lanzado una excepción. Incluso si hay una sentencia “return” en el bloque try, el bloque finally se ejecutara despues de que la sentencia return sea encontrada y antes de que se ejecute el return.
Este es el lugar perfecto para cerrar ficheros, conexiones de red y realizar cualquier otra limpieza que necesite el código. Si el bloque try se ejecuta sin excepciones, el bloque finally es ejecutado inmediatamente despues del bloque try. Si se ha lanzado una excepción, el bloque finally se ejecutara inmediatamente despues del bloque catch. Vamos a ver otro pseudocodigo de ejemplo:

try {
   // This is the first line of the "guarded region".
 }
 catch(MyFirstException) {

   // Put code here that handles this exception
 }
 catch(MySecondException) {
   // Put code here that handles this exception
 }
 finally {
   // Put code here to release any resource we
   // allocated in the try clause.
 }

 // More code here

Al igual que antes, la ejecución empieza en la primera linea del bloque try, la linea 2. Si no se lanzan excepciones en el bloque try, la ejecución continua por la linea 12, la primera linea del bloque finally.
Si una se produce una excepción MySecondException mientras el código del bloque try se ejecutaba, la ejecución pasa a la primera linea del manejador, la linea 9 en la clausula catch. Despues de que todo el código del bloque catch sea ejecutado, el programa pasara a la linea 12. Repite despues de mi: finally SIEMPRE se ejecuta!.

Recordar, las clausulas finally no son requeridas, si no la escribes, tu código compilara y ejecutará bien. De hecho, si no tienes recursos para limpiar, probablemente no necesites una clausula finally. Debido a que el compilador no requiere clausulas catch, algunas veces ejecutaras el bloque try y seguidamente el bloque finally. Esto es útil cuando la excepción se va a pasar al método llamante, como explico en la siguiente lección. El uso de un bloque finally permite al código la limpieza de recursos, incluso cuando no hay una clausula catch.
El siguiente código legal demuestra un try con finally, pero no catch:

try {
  // do stuff
} finally {
  //clean up
}

El siguiente código legal, muestra un try, catch y finally:

try {
  // do stuff
} catch (SomeException ex) {
  // do exception handling
} finally {
  // clean up
}

Ver tambien


http://javaes.wikispaces.com/, Capítulo 5 – Control de Flujo, Excepciones y Assertions.

Java 2™ Programmer Exam Cram™ 2,By Bill Brogden, Marcus Green, Chapter 8 : Exceptions and Assertions.

Java Data Access—JDBC, JNDI, and JAXP, Todd M. Thomas, Chapter 3: Setting Up Your First JDBC Query.

Anuncios

Un comentario en “Mantenimiento de una tabla en Oracle con Java y JSP – Anexo 05 – try – catch.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s