Gestion ThreadAbordException dans bloc Finally

Signaler
Messages postés
63
Date d'inscription
lundi 2 février 2004
Statut
Membre
Dernière intervention
19 mai 2010
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,

J'ai une question comportemental sur l'exception ThreadAbortException.

Lorsqu'un thread est tué, il lève l'exception ThreadAbortException.

Comme indiqué dans la doc MSDN, cette exception passe dans un bloc Finally si l'execution était dans un Try.

Je voudrais être "VRAIMENT SUR" du comportement de l'exception lorsque l'execution de code se trouve deja dans le code finally.

Pour une exception normale, j'aurais pensé que l'exception remontée.
Est ce que, pour cette exception un peu spéciale comme indiqué sur la MSDN, le bloc finally ne serait pas terminé avant que l'exception remonte ?

Merci

1 réponse

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Bonjour,

En l'occurence oui, comme le dit la documentation, l'execution du bloc finally devrait se terminer.
Je n'ai jusqu'à présent pas constaté de comportement contraire, mais c'est relativement compliqué à vérifier en situation réelle.

En général j'ai tendance à minimiser l'utilise d'Abort pour arrêter un traitement, je préfère au maximum (quand c'est possible) avoir un flag Cancel et/ou Abort partagé entre le demandeur et le code qui effectue la tâche annulable.
Ca permet d'avoir un arrêt en un point connu au lieu de se retrouver avec un abort à n'importe quel endroit du code executé par le thread (y compris dans le code tiers).
Mais ça représente une surcharge de travail (si on ne tiens pas compte de celui à fournir pour gérer correctement un abort) et ce n'est pas forcément utilisable dans tous les cas.


/*
coq
MVP Visual C#
CoqBlog
*/