English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La gestion des exceptions permet de traiter les situations d'exception de manière contrôlée, par exemple les erreurs définies par le programme.
Lorsqu'une situation anormale se produit, elle déclenche une exception. Le terme "lancer" signifie que le programme actuel cesse d'exécuter et que le contrôle des composants est redirigé vers la clause catch la plus proche applicable. Si il n'y a pas de clause catch applicable, l'exécution du programme se termine.
La gestion des exceptions JDBC est très similaire à la gestion des exceptions Java, mais pour JDBC, les exceptions les plus courantes que vous devez gérer sont java.sql.SQLException.
SQLException peut se produire dans le pilote et la base de données. Lorsque se produit une telle exception, un objet de type SQLException est transmis à la clause catch.
L'objet SQLException transmis contient les méthodes suivantes, utiles pour extraire d'autres informations sur l'exception-
Méthode | Description |
---|---|
getErrorCode( ) | Obtenez le numéro d'erreur associé à l'exception. |
getMessage( ) | Obtenez le message d'erreur du pilote JDBC traité par le pilote, ou le numéro d'erreur et le message de l'erreur de base de données Oracle. |
getSQLState( ) | Obtenez la chaîne de caractères XOPEN SQLstate. Pour les erreurs du pilote JDBC, cette méthode ne renvoie aucune information utile. Pour les erreurs de base de données, elle renverra le code xopensqlstate à cinq chiffres. Cette méthode peut renvoyer null. |
getNextException( ) | Obtenez le prochain objet Exception dans la chaîne d'exceptions. |
printStackTrace( ) | Imprimez l'exception courante ou l'exception appelable, et remontez son trace sur le flux d'erreur standard. |
printStackTrace(PrintStream s) | Imprimez cet objet jetable et son trace de pile sur le flux d'impression spécifié. |
printStackTrace(PrintWriter w) | Imprimez ce fichier unique et le remontez au writer de l'imprimante spécifié. |
En utilisant les informations fournies par l'objet Exception, vous pouvez attraper l'exception et continuer de manière appropriée l'exécution du programme. Voici la forme générale du bloc try-
try { // Le code d'exception entre ces accolades !! } catch(Exception ex) { // Le code de gestion des exceptions entre ces deux // Les accolades, similaires à la clause exception // Dans PL / Dans le bloc SQL. } finally { // Le code que vous devez toujours exécuter entre ces deux //Les accolades. Comme fermer la connexion à la base de données. }
Étudiez l'exemple de code suivant pour comprendretry....catch...finallyL'utilisation des blocks
//步骤1.Importer les packages nécessaires import java.sql.*; public class JDBCExample { // Nom du pilote JDBC et URL de la base de données static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/EMP"; // 数据库凭证 static final String USER = "username"; static final String PASS = "password"; public static void main(String[] args) { Connection conn = null; try{ //步骤2:注册JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); //步骤3:建立连接 System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); //步骤4:执行查询 System.out.println("Creating statement..."); Statement stmt = conn.createStatement(); String sql; sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); //步骤5:从结果集中提取数据 while(rs.next()){ //按列名检索 int id = rs.getInt("id"); int age = rs.getInt("age"); String first = rs.getString("first"); String last = rs.getString("last"); //显示值 System.out.print("ID: " + id); System.out.print(", Age: " + age); System.out.print(", First: " + first); System.out.println(", Last: " + last); } //步骤6:清理环境 rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ //Gestion des erreurs JDBC se.printStackTrace(); }catch(Exception e){ //Gestion de l'erreur Class.forName e.printStackTrace(); }finally{ //Empêcher finalement l'utilisation pour fermer les ressources try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } }//Fin de try System.out.println("Au revoir!"); }//Fin de main }//Fin de JDBCExample
Maintenant, compilons l'exemple ci-dessus comme suit:
C:\>javac JDBCExample.java C:\>
ExécutionJDBCExampleSi tout va bien, il produira les résultats suivants, sinon il capturera l'erreur correspondante et affichera un message d'erreur-
C:\>java JDBCExample Connexion à la base de données... Création de l'instruction... ID: 100, Âge: 18, Premier: Zara, Dernier: Ali ID: 101, Âge: 25, Premier: Mahnaz, Dernier: Fatma ID: 102, Âge: 3, Premier: Zaid, Dernier: Khan ID: 103, Âge: 28, Premier: Sumit, Dernier: Mittal C:\>
Essayer de passer l'exemple ci-dessus avec un nom de base de données incorrect ou un nom d'utilisateur ou un mot de passe incorrect, puis vérifiez les résultats.