2010-09-22 9 views
5

Estoy tratando de adjuntar un controlador de excepción no controlada para .NET excel addin. El problema es que nunca se llama al manejador de excepciones.atrapando excepciones no controladas en .NET excel addins (XLL)?

AppDomain.CurrentDomain.UnhandledException no funciona; nunca desencadena el evento.

Application.Current.DispatcherUnhandledException no se puede utilizar ya que la aplicación es nula en el código de adición de Excel.

¿cómo se conecta un controlador de excepción no controlada?

+0

Un XLL es un complemento de estilo antiguo que se basa en código no administrado. Sí, UnhandledException no se ejecutará necesariamente cuando explote el código no administrado. Excel entraría primero. –

+0

Pero no es el código no administrado que explota ... es el código .NET dentro del complemento que arroja una excepción. ¿Por qué no puede ser atrapado en cualquier lugar? – Pradeep

+0

¿Qué tipo de complemento es esto? ¿Es un complemento basado en 'IDTExtensibility2' o fue creado usando VSTO (Visual Studio Tools for Office) usando una de las plantillas de proyecto en VS 2005/2008/2010? Los complementos XLL son estrictamente * no administrados *, por lo que este no puede ser el tipo de complemento que está ejecutando. –

Respuesta

3

Es posible que no pueda, ya que la aplicación es en realidad una aplicación no administrada. Es posible que tenga que simplemente poner bloques de prueba/captura alrededor de áreas escamosas.

+4

Correcto. Como Excel llama, le toca a Excel manejar la Excepción o no. Si Excel lo maneja, no hay una excepción no controlada. Si Excel no lo maneja, Excel se bloquea. Es así de simple. De cualquier manera, la ejecución del código administrado termina en la barrera COM Interop. La clave no es tanto rodear todas las "áreas escamosas", sino utilizar el manejo de errores alrededor de todos los puntos de entrada donde Excel llama a su código. –

+0

El único problema es si utiliza subprocesos de fondo y bibliotecas Async. No es una bonita vista! –

Cuestiones relacionadas