2011-11-01 19 views
6

¿Hay alguna manera de deshabilitar el envoltorio de excepciones muy molesto de WPF cuando se depura?Deshabilitar el ajuste de excepciones de WPF para la depuración

Un ejemplo sería una ventana que posee un cuadro de texto, el cuadro de texto está vinculado a una propiedad, el getter en esa propiedad arroja una excepción que no puede ser manejada por el marco de presentación (arrojar nueva StackOverflowException() para ejemplo).

Lo que estoy a las esperadas es

 get 
     { 
      throw new StackOverflowException(); // < Exception happened here 
     } 

En cambio, lo que estoy viendo es ...

No Source Available 
    Call Stack Location: 
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k) + 0x64 bytes 

Debido a excepción de envoltura WPF esta excepción también a veces capturados y enviados a continuación, se vuelve a lanzar o se oculta profundamente en MS.Internet e imposible volver al sitio real de excepción. Esto hace que veamos una pila de llamadas gigantesca de PresentationFramework.dll, PresentationCore.dll y WindowsBase.dll, pero NINGÚN código de usuario a excepción de App.Main().

Esto ocurre durante la vinculación, los eventos llamados durante la creación y otras situaciones completamente aleatorias sin rima o razón (la excepción durante el clic del botón a veces me hace esto). Ahora sí, puedo ver el rastro de la pila dentro de la excepción, pero ese rastro de la pila tampoco tiene sentido porque no puedo regresar a ese marco para ver cuáles son las variables en el momento del lanzamiento.

+0

+1. Veo esto todo el tiempo: si el constructor de mi ventana arroja una excepción, tengo que profundizar en dos niveles de InnerExceptions para descubrir cuál fue el error real. –

Respuesta

3

Generalmente cuando estoy depurando utilizo las excepciones debug -> y selecciono lanzado para Common Language Runtime Exceptions. Esto se detendrá en el momento en que se lanza la excepción.

Visual Studio 2010 Exceptions dialog with common language runtime exceptions ticked

+1

Si bien esta solución funciona, no resuelve exactamente el problema específico de WPF. Ahora estoy obligado a ver todas las excepciones, incluso si se detectan, lo que puede ser una auténtica pesadilla si uso otra tercera biblioteca que internamente arroja y atrapa quién sabe por qué. Lo que estoy buscando es una forma de ver solo las excepciones no detectadas que WPF está capturando/reiniciando, enviando a los oyentes de depuración, u ocultando de otra manera. – NtscCobalt

Cuestiones relacionadas