2010-07-27 94 views
2

我在写一些相当复杂的C#代码。我发现我的代码抛出一个异常(在输出窗口中注明),但调试器没有插入。我确实有异常集来解决用户未处理的CLR异常。寻找c#异常处理程序

由于调试器没有入侵,我假设调试堆栈中的某处必须有try {}。

问题是,我找不到它。

如何找到抛出异常的这行代码的异常处理程序?

+0

代码中的异常发生在哪里?它是Windows窗体代码吗? WPF?安慰? – 2010-07-27 11:35:49

回答

3

在Visual Studio中打开例外窗口。展开适当的树来查找正在抛出的异常并检查“Thrown”复选框。下一次在调试模式下抛出异常(未捕获),调试器将立即中断。

2

检查跟踪,以便您可以从抛出异常的位置看到。

2

设置抛出异常抛出Debug - >异常到'Exceptions'对话框,然后'Common Language Runtime Exceptions'检查'Thrown'复选框。

只要发生任何异常,这将停止。

您可能会发现异常数量惊人的是抛出你的“正常”代码执行的一部分(之类的插座异常或解析例外当你的UI是数据绑定),在这种情况下,切换关闭上扔了“突破'复选框并在您的违规代码附近放置一个断点。调试到断点,然后切换到断点并继续调试器。

0

您可以尝试捕获应用程序级别excpetion。只需添加到您的主要方法,下面的代码:

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

和处理所有expections在下面的方法:

 static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) 
    { 
     //Log Excpetion or place breakpoint 
    } 

如果将处理程序中的断点,你将能够看到一个异常的堆栈跟踪。

希望这会有所帮助。

+0

这很可能无济于事。他的应用程序没有崩溃,这是很好的。 – Will 2010-07-27 11:45:48

+0

是的,你可能是对的:) – 2010-07-27 11:52:40