Bonjour à tous,
Je poste ici après avoir eu un débat avec les collègues concernant la fermeture de composants JDBC.
La méthode est la suivante :
Les critiques remontées sont les suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // Déclaration des componsants JDBC Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try{ // Ouverure et utilisation des componsants JDBC ... } // A noter : pas de bloc catch, les exceptions seront remontées au niveau suppérieur finally{ try{rs.close();}catch(Exception e){} try{stmt.close();}catch(Exception e){} try{conn.close();}catch(Exception e){} }
1- On catch une exception générique et non un sous type SQLException
2- On ne log pas l'exception
Mon avis : si une exception à lieu durant la fermeture des composants, c'est qu'en principe une exception a déja été levée dans le try{} et donc elle sera catchée au niveau supérieur. La logger ne sert donc à rien. Et de toute façon si le close() plante et que la connexion a été fermée (ex:coupure réseau) avant l'entrée dans le bloc finally, de toute façon le commit a déja eu lieu et cela ne pose aucun problème.
Qu'en pensez-vous ? Comment avez-vous l'habitude de procéder pour fermer vos composants JDBC ? Est-ce que vous trouvez cette méthode "propre" ou pas ?







Répondre avec citation
Partager