2010-12-14 59 views
0

Disons que j'ai un bloc d'instructions if qui lèvent une exception si le conditionnel est vrai. Comment puis-je créer une méthode qui utilise ces mêmes conditions, mais renvoie un vrai ou faux au lieu de jeter les exceptions. c'est-à-dire, si une exception est levée, renvoyer false; Si une exception n'est pas lancée, renvoyez true. Je veux réutiliser autant de code que possible.Comment réutiliser le code de lancement d'exception pour renvoyer un booléen?

Je voudrais également essayer d'éviter simplement attraper toutes les exceptions que je lance.

modifier: les fautes de frappe désolé

+0

"jeter un booléen", hein? :) Mais sérieusement, quel est exactement le problème que vous rencontrez lors de la création de la méthode en conséquence? – BalusC

Répondre

2

Déplacer le code dans une fonction qui renvoie le booléen, puis changer la fonction originale d'appeler la nouvelle et lancer une exception si elle retourne false.

+0

Il semble qu'il y ait plus qu'un seul type d'exception. –

+0

@Aaron: Vous pouvez ensuite créer un paramètre 'boolean shouldThrow'. – SLaks

0

Avoir le code commun accepter un délégué qui sera invoqué si la condition mauvaise se produit (probablement une fonction qui renvoie false). Puis:

 
    if (SomethingBadHappened) 
    return ReportSomethingBad(new ImNotFeelingWellException("I'm not feeling too well...")); 

La version « TryDoingSomething » de la routine (qui devrait revenir faux plutôt que de lancer une exception) devrait invoquer la version commune avec un délégué qui ne fait rien, mais return false. La version "DoSomethingAndThrowExceptionIfItFails" doit appeler la routine commune avec un délégué qui lancera l'exception transmise. Faire les choses de cette façon permettra aux exceptions de contenir beaucoup plus d'informations utiles que ce qui serait possible si elles étaient simplement générées par une routine TryDoingSomething() qui renvoyait false.