有没有办法在调试时禁用WPF非常烦人的异常包装?
一个示例是一个拥有文本框的窗口,文本框绑定到一个属性,该属性上的getter抛出一个异常,该异常无法由表示框架处理(例如抛出新的StackOverflowException()) )。
我应该看到的是
get
{
throw new StackOverflowException(); // < Exception happened here
}
相反,我所看到的是......
No Source Available
Call Stack Location:
PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k) + 0x64 bytes
由于WPF的异常包装,有时也会捕获并分派此异常,然后重新抛出或隐藏在MS.Internals深处,并且无法返回到实际的异常站点。这导致我们看到了一个巨大的PresentationFramework.dll,PresentationCore.dll和WindowsBase.dll的callstack,但没有用户代码,除了App.Main()。
这发生在绑定,创建期间调用的事件以及其他完全随机的情况下,没有押韵或理由(按钮单击期间的异常有时对我这样做)。现在是的,我可以查看异常内部的堆栈跟踪,但堆栈跟踪也几乎毫无意义,因为我无法返回到该帧以查看抛出时的变量。
答案 0 :(得分:3)
通常在调试时我会使用debug - &gt;公共语言运行时异常抛出的异常和选择。然后,这将在抛出异常时停止。