2012-06-25 18 views
8

En mi programa, creo expresiones lambda dinámicas y luego las compilo a delegados. Estos delegados se invocan para extraer información de mis entidades. Algunos de los delegados pueden lanzar excepciones. He detectado la excepción en la que llamo al delegado. He habilitado "Habilitar solo mi código" y he aplicado el atributo [DebuggerNonUserCode] al lugar donde se creó LambdaExpression, dónde se compiló y dónde se llamó. Pero debido a que en Debug> Exceptions> Common Language Runtime Exceptions, la casilla de verificación Thrown está marcada, Visual Studio siempre se detiene en el error, lo que es un gran inconveniente para los desarrolladores.Evitar que el depurador se detenga en una excepción en una LambdaExpression compilada

Parece que [DebuggerNonUserCode] se debe aplicar de alguna manera al delegado compilado, pero ¿cómo? O cualquier otra sugerencia?

Gracias.

+2

¿No se está deteniendo en una primera excepción de cambio? Se pueden desactivar por separado. – CodingBarfield

+0

No, siempre se detiene en el error, no solo la primera vez. – Alireza

+1

¿Estás seguro de que la excepción se captura en alguna parte? Si hay excepciones no detectadas que bloquearían la aplicación, Visual Studio siempre muestra el mensaje de excepción. – CodingBarfield

Respuesta

1

Hasta donde yo sé, no puede aplicar atributos a métodos anónimos generados mediante expresiones, aparte de posiblemente algún horrible juego con la generación de tipos dinámicos.

Sin embargo, una posible sugerencia sería ir al menú de excepción en Debug > Exceptions y elegir qué excepciones desea romper específicamente. Si sus expresiones tienden a arrojar excepciones de tipos específicos, simplemente puede deshabilitar la interrupción de esas excepciones.

+1

Bueno ... Es posible que esté dispuesto a dar esos pasos horribles. ¿Alguna sugerencia al recurso correcto? Gracias – Alireza

Cuestiones relacionadas