Controlar SQLException

22/Oct/2016 Java , Deja un comentario

Si estás trabajando con un programa que acceda a una base de datos con Java JDBC seguro que has tenido que enfrentarte a controlar SQLException. SQLException es la excepción que se lanza cuando hay algún problema entre la base de datos y el programa Java JDBC.

Por ejemplo, cuando realizamos una consulta debemos de poner nuestro código que maneje el ResultSet dentro de de un bucle try-catch.

  1. try {
  2. stmt = con.prepareStatement("SELECT pais FROM paises");
  3. rs = stmt.executeQuery();
  4.  
  5. while (rs.next())
  6. System.out.println (rs.getString("pais"));
  7.  
  8. } catch (SQLException sqle) { }

Este bucle es el que nos permite controlar SQLException en caso de error. Pero una vez que se lanza la SQLException, qué podemos saber de ella. Pues veamos un poco los métodos que contiene y qué información nos proporcionan.

  • .getMessage(), nos indica la descripción del mensaje de error.
  • .getSQLState(), devuelve un código SQL estándar definido por ISO/ANSI y el Open Group que identifica de forma unívoca el error que se ha producido.
  • .getErrorCode(), es un código de error que lanza la base de datos. En este caso el código de error es diferente dependiendo del proveedor de base de datos que estemos utilizando.
  • .getCause(), nos devuelve una lista de objetos que han provocado el error.
  • .getNextException(), devuelve la cadena de excepciones que se ha producido. De tal manera que podemos navegar sobre ella para ver en detalle de esas excepciones.

Los tres primeros métodos nos permiten ver lo que podemos definir como información básica de la excepción y que podemos volcar por pantalla de la siguiente forma.

  1. System.out.println("Código de Error: " + sqle.getErrorCode() + "\n" +
  2. "SLQState: " + sqle.getSQLState() + "\n" +
  3. "Mensaje: " + sqle.getMessage() + "\n");

Para navegar por las causas del error, el método .getCause() lo vamos a volcar sobre un objeto Throwable sobre el que iremos viendo todas las causas que ha generado. El código será el siguiente:

  1. Throwable t = sqle.getCause();
  2. while(t != null) {
  3. System.out.println("Causa: " + t + "\n");
  4. t = t.getCause();
  5. }

Para el caso de la lista encadena de excepciones nos volvemos apoyar en un bucle para irla recorriendo. De cada una de las excepciones vamos a mostrar los datos básicos del error.

  1. SQLException ex = sqle.getNextException();
  2. while (ex != null) {
  3. System.out.println("Código de Error: " + sqle.getErrorCode() + "\n" +
  4. "SLQState: " + sqle.getSQLState() + "\n" +
  5. "Mensaje: " + sqle.getMessage() + "\n");
  6. }

Con lo visto aquí ya tenemos más información sobre cómo controlar SQLException y saber qué información podemos obtener de ella.

Vídeos sobre Java


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*