try/catch et retour de fonction

try/catch et retour de fonction - Java - Programmation

Marsh Posté le 13-11-2004 à 18:32:29    

Bonjour,
 
Une petite question java. Si j'ai une fonction qui retourne une valeur construite à partir d'une requete dans une BDD (via un pool de connexion), il faut que je libère la connexion meme lorsque j'ai une erreur.
 
donc j'ai la synthaxe suivante :

Code :
  1. public String getArticleById(String id_article)
  2.  {
  3.   try {
  4.     ...
  5.                                         recup d'une connection de mon pool
  6.     return ma_chaine;
  7.       }
  8.   catch (Exception e){System.out.println(e); return "erreur";}
  9.  }


 
Je souhaite mettre les fermetures de mes statements et la libération dans des finally pour qu'ils soient faits à tout les coups, même lorsque j'ai une erreur.
 
1°) est ce correct comme mise en oeuvre ? C'est a dire que mon return dans mon try laissera le finally s'executer ?
 
2°) si j'ai une erreur, le return de mon erreur je le laisse dans le catch ?
 
Merci pour vos réponses :hello:

Reply

Marsh Posté le 13-11-2004 à 18:32:29   

Reply

Marsh Posté le 15-11-2004 à 09:06:23    

1°) non, ton finally ne s'exécutera pas. tu dois mettre le return à la fin de ta méthode et, dans ton catch faire un 'ma_chaine = "erreur"
 
2°) non, par conséquent

Reply

Marsh Posté le 15-11-2004 à 09:22:12    

Peut être faudrait-il mieux que tu ne mettes qu'un bloc try/finally et que tu fasses remonter l'exception non ?

Reply

Marsh Posté le 15-11-2004 à 11:06:54    

mixoumix a écrit :

1°) non, ton finally ne s'exécutera pas. tu dois mettre le return à la fin de ta méthode et, dans ton catch faire un 'ma_chaine = "erreur"
 
2°) non, par conséquent


 
Ok, je pensais qu'un finally s'executait quoiqu'il arrive.
Donc je vais changer qque peu mon implémentation.
 
Merci pour vos conseils :)

Reply

Marsh Posté le 15-11-2004 à 11:29:14    

mixoumix a écrit :

1°) non, ton finally ne s'exécutera pas. tu dois mettre le return à la fin de ta méthode et, dans ton catch faire un 'ma_chaine = "erreur"

[:mlc] non mais n'importe quoi ...  
 
 
machin >> ton finally s'executera dans tous les cas, avant que la method fasse le return.

Reply

Marsh Posté le 15-11-2004 à 11:45:54    

the real moins moins a écrit :

[:mlc] non mais n'importe quoi ...  
 
 
machin >> ton finally s'executera dans tous les cas, avant que la method fasse le return.


 
Justement j'etais en train de mettre des traces et c'est ce que je constatais.
donc par rapport au post d'origine, pas d'erreur d'implementation ?
 
Merci

Reply

Marsh Posté le 15-11-2004 à 11:53:23    

non c'est bon, meme si je suis pas fervent de ta methode d'avaler l'exception et de renvoyer une chaine comme si de rien n'était

Reply

Marsh Posté le 15-11-2004 à 12:05:12    

the real moins moins a écrit :

non c'est bon, meme si je suis pas fervent de ta methode d'avaler l'exception et de renvoyer une chaine comme si de rien n'était


 
C'est pour de la gestion de contenu. Lorsqu'il y a un plantage pour une raison indépendante du programme (par exemple pas de réponse de la bdd), je souhaite mettre un message du genre "service indisponible" plutot que de laisser le truc en vrac.
D'ailleurs, dans mon catch, je log (pas juste un message, je n'ai pas mis l'integralité du code)
 
Tu as une autre solution ? (je suis preneur)

Reply

Marsh Posté le 15-11-2004 à 12:07:24    

bah ça dépend des couches, mais là ça ressemble à un melange de gui/logique, quoi

Reply

Marsh Posté le 15-11-2004 à 12:40:50    

the real moins moins a écrit :

bah ça dépend des couches, mais là ça ressemble à un melange de gui/logique, quoi


 
ok, merci pour le conseil :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed