运行我的应用程序时,我在Visual Studio的“输出”面板中找到了异常日志。
System.Windows.Forms.dll中出现'System.InvalidOperationException'类型的第一次机会异常
该应用程序的架构师如下。
我想知道调用的InvalidOperationException的详细信息, 但它只显示在“输出”面板上,因此我无法捕获它以查看堆栈跟踪。 有没有办法知道它?
答案 0 :(得分:14)
找到其中这样的异常的最佳方法是将调试器设置为中断所有异常。
您可以转到Debug
菜单,选择Exceptions...
并选中Thrown
旁边的Common Language Runtime Exceptions
选项来执行此操作。无论何时或是否处理.NET异常,这都将在任何时候中断。
这不会修复你的问题,但它有助于识别它。
答案 1 :(得分:2)
使用像这样的try / catch:
try
{
//Some code here.
//Also, set your breakpoints here.
}
catch (InvalidOperationException exc)
{
MessageBox.Show(exc.ToString());
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
C#(和其他语言)中的异常处理从最具体的异常到最不具体的异常类型。上面的例子也将在MessageBox
中显示堆栈跟踪。
答案 2 :(得分:1)
尝试执行以下操作:
您可能希望将此技术与try/catch
结合使用,正如其他人所建议的那样。我不想重复其他人的答案中提供的代码,但我会使用Brian的try/catch
来打包你的电话,然后使用这种技术设置断点。
注意:你也可以使用这种技术和“断点条件”来调用方法(即打印结果)和/或更改值(后者有点像黑客,但是,并且只应在完全必要且您正在使用64位应用程序时才能完成。在这种情况下,这些附加功能可能也可能不适用于您。