2010-07-14 23 views
4

Je dessinais une activité aujourd'hui et je suis tombé sur un problème par lequel relancer une exception dans le bloc Catch d'un TryCatch n'exécute pas le Final qui lui est également associé. Après enquête, je suis tombé sur leQuel est le but d'une activité .NET 4.0 TryCatch si l'exécution finale n'est pas garantie?

suivant

http://connect.microsoft.com/wf/feedback/details/557601/try-catch-activity-never-executes-finally-if-exception-propagates

Quelqu'un peut-il me expliquer ce que l'utilisation du bloc finally est dans cette activité si elle n'est pas garanti d'exécuter?

Le seul cas que je peux voir est si vous avez imbriqué des blocs.

+1

me rappelle de cette ... http://thedailywtf.com/Articles/My-Tales.aspx –

Répondre

5

si vous suivez quelques liens de cette page vous connecter atteindrez this page où vous pouvez trouver une réponse ... l'essentiel est:

Les fonctions WF normales comme

try 
{ 
    Environment.FailFast("Game Over."); 
} 
finally 
{ 
    Console.WriteLine("Not Called"); 
} 

la solution est (citer steve danielson à partir de cette page): Si vous spécifiez Cancel comme comportement pour les exceptions non gérées échappant à la racine du workflow, alors il devrait donner le comportement souhaité. J'ai transmis ces commentaires et je m'assurerai que la documentation est mise à jour pour refléter cela.

-à-dire Workflowapplication.OnUnhandledException = UnhandledExceptionAction.Cancel

HTH