2010-09-22 4 views
5

J'essaie de joindre un gestionnaire d'exception non gérée pour .NET excel addin. Le problème est que le gestionnaire d'exceptions n'est jamais appelé.interception d'exceptions non gérées dans .NET Excel Addins (XLL)?

AppDomain.CurrentDomain.UnhandledException ne fonctionne pas - ne déclenche jamais l'événement.

Application.Current.DispatcherUnhandledException ne peut pas être utilisé car Application est null dans le code d'extension Excel.

comment câbler un gestionnaire d'exception non gérée alors?

+0

Un fichier XLL est un ancien complément basé sur du code non géré. Oui, UnhandledException ne sera pas nécessairement exécuté lorsque le code non géré explose. Excel entrerait en premier. –

+0

Mais ce n'est pas le code non managé qui explose .. c'est le code .NET dans l'addin qui déclenche une exception. pourquoi est-ce que ça ne peut pas être piégé n'importe où? – Pradeep

+0

De quel type de complément s'agit-il? Est-ce un complément basé sur 'IDTExtensibility2' ou a-t-il été construit en utilisant VSTO (Visual Studio Tools pour Office) en utilisant l'un des modèles de projet dans VS 2005/2008/2010? Les compléments XLL sont strictement * non gérés *, ce qui ne peut pas être le type de complément que vous utilisez. –

Répondre

3

Vous ne pourrez peut-être pas, puisque l'application est en réalité une application non gérée. Vous devrez peut-être simplement essayer/attraper des blocs autour des zones feuilletées.

+4

Correct. Comme Excel est l'appelant, il appartient à Excel de gérer l'exception ou non. Si Excel gère, il n'y a pas d'exception non gérée. Si Excel ne le gère pas, Excel se bloque. C'est si simple. Dans tous les cas, l'exécution du code géré se termine à la barrière COM Interop. La clé n'est pas tant d'entourer toutes les "zones floconneuses", mais d'utiliser la gestion des erreurs autour de tous les points d'entrée où Excel appelle votre code. –

+0

Le seul problème est si vous utilisez des threads d'arrière-plan et des bibliothèques asynchrones. Pas joli à voir! –

Questions connexes