2009-08-27 11 views

Répondre

2

qui sonne comme sur l'erreur de VB Goto X/Reprendre motif suivant. Si oui, alors non. VB.NET le permet, mais principalement pour la rétrocompatibilité.

En .NET est un hack tellement grossier que je n'ai jamais vu personne l'utiliser.

2

Ce n'est pas possible.

.NET dispose d'un mécanisme de filtrage des exceptions, mais il n'est pas exposé via le langage C#. De plus, je ne crois pas que cela vous permette de reprendre l'exécution au moment où l'exception s'est produite. C'est plus pour décider s'il faut ou non attraper une exception basée sur plus que le type de l'exception.

3

Le CLR prend en charge les filtres d'exception de distribution d'exceptions à deux passes via la clause IL filter/endfilter, mais les instructions de bas niveau qui l'implémentent directement ne sont pas prises en charge par le compilateur C#.

En outre, les deux seules valeurs de retour de la clause prises en charge sont 0 et 1, qui se réfèrent à exception_continue_search et exception_execute_handler respectivement. Ainsi, la reprise d'exécution au moment de l'exception n'est pas une option.

+0

"L'exécution ne peut pas être reprise à l'emplacement de l'exception, sauf avec un gestionnaire de filtre." à partir de 12.4.2.5 Vue d'ensemble du traitement des exceptions. – tgiphil

+0

@tgiphil, mais les seules valeurs de retour * spécifiées * pour 'filter' /' endfilter' sont la poursuite de la recherche et l'exécution du gestionnaire, comme indiqué. Maintenant, si vous renvoyé -1 (ou 0xffffffff), il pourrait fonctionner de la même manière que SEH; voir http://msdn.microsoft.com/fr-fr/library/windows/desktop/ms680634%28v=vs.85%29.aspx –