Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在即时窗口中计算未处理的异常属性_C#_Visual Studio 2010_Debugging_Exception_Immediate Window - Fatal编程技术网

C# 如何在即时窗口中计算未处理的异常属性

C# 如何在即时窗口中计算未处理的异常属性,c#,visual-studio-2010,debugging,exception,immediate-window,C#,Visual Studio 2010,Debugging,Exception,Immediate Window,我有一个未处理的异常,导致出现异常助手对话框 当我单击View Detail…,异常本身在其自定义对象模型中有一些值,这些值不会在属性网格中计算,但我知道我可以在即时窗口中计算它。(在这种情况下,属性网格不允许我深入到集合中,但也可能存在其他情况) 在不更改代码以添加try块的情况下,如何转到立即窗口并计算未处理异常的表达式 答案可能是一些我还不知道的魔法,比如?this.CurrentException或 涉及System.Diagnostics.StackFrame或谁知道的东西。聪明的东西

我有一个未处理的异常,导致出现异常助手对话框

当我单击View Detail…,异常本身在其自定义对象模型中有一些值,这些值不会在属性网格中计算,但我知道我可以在即时窗口中计算它。(在这种情况下,属性网格不允许我深入到集合中,但也可能存在其他情况)

在不更改代码以添加try块的情况下,如何转到立即窗口并计算未处理异常的表达式

答案可能是一些我还不知道的魔法,比如?this.CurrentException或

涉及
System.Diagnostics.StackFrame
或谁知道的东西。聪明的东西


有一种方法可以使用调试器线程导航到它,但这相当复杂。如果你能用一个可能是解决方案的包装器使它变得简单。

我不知道Visual Studio 2010,但在Visual Studio 2012中,当发生未处理的异常时,它会显示在名为
$exception
Locals
窗口中

有一个属性不会在属性网格中计算

如果无法计算属性,调试器将不会像您所看到的那样帮助您;因此,立即窗口也会这样做

我有一个无效属性,它会在VS2010中引发异常,并在我尝试对其求值时导致调试器崩溃。从属性返回的空值对调试器不好

我建议您在这个问题上采取老一套的做法,将其放在酒店和其他地方,并在输出窗口中监控写报告


是否尝试将调试器设置为在引发异常时中断,而不是仅在用户未处理异常时中断

要执行此操作,请转到VS2010主菜单并选择“调试”菜单 下一步选择“例外…”

这将弹出一个对话框,如: 例外情况。。菜单“>

选择抛出的列

现在,当抛出异常时,您应该能够在即时窗口中计算局部变量

在Locals选项卡中,我可以看到$exception变量:

我可以在即时窗口中使用“$exception”变量:

更新:
此外,为了方便切换异常处理,我建议使用,它允许您从工具栏上切换中断异常处理,而无需深入调试菜单。

我们使用Visual Studio 2010,因为我们喜欢彩色图标。(开玩笑),但我们仍然使用该版本。它没有出现在“本地人”窗口中。我在“观察”窗口中尝试了该表达式,但没有成功。我在Visual Studio 2015的“本地人”窗口中也没有看到$exception。我特别尝试评估未处理的异常本身。当我遇到感兴趣的异常时,Visual Studio正在中断。是否继续你知道我会在即时窗口中键入什么来计算涉及未处理异常的表达式吗?我可以通过VS2010中的“$exception”访问它。我已经用图像更新了帖子。我知道你提到过你没有将“$exception”视为变量,但使用了“异常发生时中断:抛出”选项“检查过了,它是给我的。我试过了,当“抛出”框被取消选中时,变量不在那里。感谢您做出这样的区分!这对我来说很有用:-)我认为这是一个和这个版本一样好的答案。我希望在2012年不必选中该复选框。我想补充的是,如果在调试选项中关闭异常助手,则可以取消选中异常对话框中抛出的复选框。我不知道为什么他们是相互排斥的,但这可能是最好的。我编辑了我的问题来澄清。很抱歉给你带来了困惑。我没有调试代码中的属性或表达式。我要计算的表达式涉及未处理的异常,它是异常对象图的一部分。谢谢