JDBC - Fermeture des composants
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 :
Code:
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){}
} |
Les critiques remontées sont les suivantes :
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 ?