jdbc exception handling how handle sql exceptions
la mejor aplicación de conversión de youtube a mp3
Este tutorial de manejo de excepciones JDBC explica formas de manejar excepciones SQL con la ayuda de ejemplos de programación:
En el Gestión de transacciones JDBC tutorial de la Serie de tutoriales de JDBC , aprendimos los tipos de transacciones de JDBC, los tipos de datos, los métodos de gestión de transacciones y cómo usarlos en programas Java.
En este tutorial, aprenderemos sobre las excepciones en JDBC y cómo manejarlas. En JDBC, si la excepción ocurrió debido a la conectividad de la base de datos o cualquier cosa relacionada con la base de datos, vendrá bajo SQLException. Aquí veremos más información sobre SQLExceptions.
Preparémonos para conocer las excepciones en JDBC.
Lo que vas a aprender:
Manejo de excepciones JDBC
Las excepciones ocurren cuando hay un error o advertencia en la ejecución del programa. Cuando ocurre una excepción, el flujo normal del programa se verá afectado y el programa terminará anormalmente. Lo bueno de la excepción es que podemos manejarla usando un bloque try-catch o una palabra clave throws. Todas las excepciones y errores son subclases de la clase Throwable. La clase Throwable es la clase base de todas las excepciones y errores.
Palabras clave de manejo de excepciones de Java
Hay cinco palabras clave en el Manejo de excepciones de Java. Son los siguientes:
- Tratar: Las declaraciones de programa que pueden generar la excepción deben mantenerse dentro de un bloque try.
- Captura: Si ocurre alguna excepción en el bloque try, se lanzará. Podemos detectar esa excepción usando el bloque Catch y manejarla en el código.
- Lanzar: Las excepciones generadas por el sistema son lanzadas automáticamente por JVM. Para lanzar manualmente las excepciones, debemos usar una palabra clave.
- Lanza: Cualquier excepción que se haya descartado de un método debe especificarse mediante una cláusula throws.
- Finalmente: Cualquier instrucción de programa que deba ejecutarse después del bloque try debe mantenerse en el bloque finalmente.
>> Haga clic en aquí para obtener más información sobre las excepciones en Java.
SQLException
En JDBC, podemos obtener excepciones cuando ejecutamos o creamos la consulta. Las excepciones que ocurren debido a la base de datos o al controlador se incluyen en la excepción de SQL. Usando el manejo de excepciones, podemos manejar la excepción SQL como manejamos la excepción normal.
SQLException está disponible en el paquete java.sql. Extiende la clase Exception, lo que significa que también podemos usar los métodos disponibles en la clase Exception en la clase SQLException.
Ejemplo de excepción SQL
Un error de sintaxis en la instrucción SQL puede resultar en una excepción SQL. Cuando ocurre tal excepción, un objeto de la clase SQLException se pasará al bloque catch. Al usar la información del objeto SQLException, podemos detectar esa excepción y continuar con el programa.
El objeto SQLException tiene los siguientes métodos:
| Nombre del método | Descripción |
|---|---|
| getErrorCode () | Devuelve el número de error |
| getMessage () | Devuelve el mensaje de error |
| getSQLState () | Devuelve el SQLState del objeto SQLException. También puede devolver un valor nulo. Para el error de la base de datos, devolverá XOPEN SQL State |
| getNextException () | Devuelve la siguiente excepción en la cadena de excepciones. |
| printStackTrace () | Imprime la excepción actual y su seguimiento a un flujo de error estándar |
| setNextException (SQLEXception ex) | Se usa para agregar otra excepción SQL en la cadena. |
Cómo manejar las excepciones
La excepción relacionada con JDBC genera principalmente SQLException, y es una excepción marcada, por lo que debemos detectarla o lanzarla. Toda la lógica empresarial y los datos de confirmación deben realizarse en un bloque Try, si ocurriera alguna excepción en el bloque, deberíamos detectarla y manejarla en el bloque Catch. Según el tipo de excepción, deberíamos hacer las reversiones o confirmar en el bloque Catch.
Categorías de SQLException
A veces, el controlador JDBC puede generar la subclase de SQLException que representa un estado SQL común o un estado de error común que no está asociado específicamente con un valor de clase de estado SQL particular. Le hará manejar la excepción de una manera más específica, y podemos manejarla en nuestro código. Estos tipos de excepciones pertenecen a las subclases de una de las siguientes excepciones:
- SQLNonTransientException: Este tipo de excepción se lanzará cuando una instancia en la que un reintento de la misma operación falle a menos que se haya corregido la causa de la excepción SQLException.
- SQLTransientException: Este tipo de excepción se lanzará cuando una operación fallida anteriormente pueda tener éxito cuando volvamos a intentar la operación sin ningún cambio / intervención.
- SQLRecoverableException: Este tipo de excepción se lanzará cuando una operación fallida anteriormente pueda tener éxito cuando volvamos a intentar la operación nuevamente con cualquier cambio / intervención de la aplicación. Mientras hace eso, la conexión actual debe cerrarse y la nueva conexión debe abrirse.
Otras subclases de SQLException:
Las siguientes son las subclases de SQLException:
- BatchUpdateException: Este tipo de excepción se lanzará si se ha producido algún error al realizar la operación de actualización por lotes. Además de la información de SQLException, BatchUpdateException proporciona el estado de las declaraciones que se han ejecutado / actualizado antes de que ocurriera el error.
- SQLClientInfoException: Este tipo de excepción se lanzará si una o más propiedades de información no se pudieron establecer en una conexión. Además de la información de SQLException, SQLClientInfoException es una lista de propiedades de información del cliente que no se establecieron.
En este tutorial, veremos SQLException normal, y luego veremos BatchUpdateException. Puede ejercitar las subclases restantes de SQLException en su sistema.
En el siguiente ejemplo, explicaremos cómo manejar la excepción.
Todos los programas están escritos en Java, en este tutorial. Hemos utilizado la versión Java 8 y Oracle DB.
>> Haga clic en aquí para descargar el software de Oracle
>> Haga clic en aquí para descargar la versión 8 de Java
Tiene el proceso de instalación de Java paso a paso.
Programa de ejemplo de excepciones
|_+_|Producción:

Explicación:
#1) Se creó una consulta de selección que tiene el nombre de columna que no está en la tabla EMPLOYEE_DETAILS.
Crear consulta:
|_+_|#2) Se creó la conexión, la declaración y se ejecutó la consulta seleccionada en el bloque try.
#3) En el bloque Catch, manejamos la excepción.
#4) Estamos mostrando el Error de la excepción usando el método getError (), SQLState de la excepción usando el método getSQLState (), el mensaje de la excepción usando el método getMessage () e imprimimos el seguimiento de la pila de la excepción usando el método printStackTrace.
Ejemplo de BatchUpdateException
Hemos creado una nueva tabla para ilustrar el ejemplo de BatchUpdateException. El nombre de la mesa es EMPLEADO. Tiene 3 columnas.
Son:
- ID que es una clave principal
- APELLIDO
- NOMBRE DE PILA
Sintaxis para crear una tabla en ORACLE DB:
|_+_| 
Programa Java:
|_+_|PRODUCCIÓN:

Explicación:
Lo que hemos hecho en el programa anterior es que hemos creado 3 consultas INSERT, las hemos agregado en un lote y las hemos ejecutado. Los 3rdla consulta tiene el mismo valor de id de 1S tconsulta dado que la columna ID es una clave principal de la tabla EMPLOYEE, el programa ha lanzado una BatchUpdateException.
- Creó las 3 consultas de inserción para insertarlo en la tabla EMPLOYEE. La primera y la tercera consulta tienen el mismo valor de ID. La columna id es una clave principal de la tabla EMPLOYEE.
- Se creó el objeto de declaración y se agregaron estas 3 consultas utilizando el método addBatch (). Luego se llama al método executeBatch () para ejecutarlo.
- Dado que la primera y la tercera consulta tienen el mismo valor de ID. Cuando executeBatch () intentó ejecutar la tercera consulta, arrojará BatchUpdateException.
- En el bloque de captura BatchUpdateException, llamamos al método getUpdateCounts () para obtener el estado de la fila actualizada.
- Usando for loop, estamos verificando uno por uno si el estado de la declaración en particular se ejecuta falló o no. Si la declaración en particular no falla, imprimirá el número de fila de la declaración.
- Después de eso, imprimirá el printStackTrace de BatchUpdateException.
- En el ejemplo anterior, dado que la excepción se produjo debido a la tercera declaración, se imprimieron las declaraciones 1 y 2. Luego, el seguimiento completo de la excepción se ha impreso en la consola de salida.
Puntos para recordar:
- La excepción que ocurrió debido a la base de datos vendrá bajo SQLException.
- Las excepciones en Java se pueden manejar usando el bloque try: catch.
- SQLException es la excepción marcada, por lo que podemos manejarla usando try: catch block.
- Tenemos algunas subclases de SQLException. Son SQLNonTransientException, SQLTransientException, SQLRecoverableException, BatchUpdateException y SQLClientInfoException.
Preguntas frecuentes
P # 1) ¿Qué es una excepción SQL?
Responder: Se produjo una excepción debido a la base de datos que se conoce como excepción SQL. Una excepción que proporciona información sobre la base de datos relacionada también se conoce como excepción SQL. Tenemos una clase SQLException en Java, que se utiliza para proporcionar información sobre la excepción. Tiene los siguientes métodos:
- getErrorCode ()
- getMessage ()
- getSQLState ()
- printStackTrace ()
- getNextException ()
P # 2) ¿Cómo manejar la excepción en SQL?
Responder: Escriba la lógica empresarial en el bloque try. Si se ha producido algún error o excepción, descárguelo en el bloque Catch y escriba el mensaje apropiado para encontrar la excepción fácilmente.
El bloque Try – Catch se usa para manejar la excepción.
P # 3) ¿Cuándo puede ocurrir SQLException en Java?
Responder: SQLException ocurre si hay un error en el acceso a la base de datos u otros errores relacionados con la base de datos. Cuando se produce SQLException, un objeto de tipo SQLException se pasará a la cláusula catch. Podemos manejarlo en el bloque Catch.
P # 4) ¿Qué es la cadena de excepciones en Java y cuál es su uso?
Responder: Una excepción que causa otra excepción se conoce como Exception Chain o Chained Exception. En la mayoría de los casos, necesitamos encadenar la excepción de modo que relacione una excepción con otra, hará que los registros sean claros y fáciles de rastrear. Será útil para el programador en el proceso de depuración.
Por ejemplo:
Considere un método que arroja una excepción aritmética debido a la división por cero. La causa real de la excepción es un error de E / S, que hace que el divisor sea cero. El método solo arrojará una excepción aritmética al programador. Para que la persona que llama / programador no llegue a conocer la causa real de la excepción. En este tipo de situación, podemos usar una excepción encadenada.
Conclusión
Las excepciones se pueden manejar usando un bloque try-catch o lanzándolo. Las excepciones ocurridas debido a que la base de datos se conoce como SQLException. Tenemos una clase separada para SQLException que es una subclase de Exception. Tenemos los métodos para conocer la excepción SQL de manera más específica.
Los métodos son getMessage (), getErrorCode (), getSQLState (), getNextException y printStackTace. getNextException se utilizará en el caso Exception Chained.
Lectura recomendada
- Excepciones de Java y manejo de excepciones con ejemplos
- Las 10 principales excepciones de selenio y cómo manejarlas (código exacto)
- Guía completa para el manejo de excepciones PL SQL con ejemplos
- Tutorial de manejo de excepciones de C # con ejemplos de código
- Manejo de excepciones en C ++
- Cómo manejar la excepción en los scripts de SoapUI Groovy - Tutorial de SoapUI n. ° 11
- Tutorial PL SQL para principiantes con ejemplos | ¿Qué es PL / SQL?
- Paquete PL SQL: Tutorial del paquete Oracle PL / SQL con ejemplos