我正在写一些相当复杂的C#代码。我发现我的代码抛出异常(在“输出”窗口中注明),但调试器没有中断。我确实有异常集来打破用户未处理的CLR异常。
由于调试器没有中断,我假设调用堆栈中某处必须有try {}。
问题是,我找不到它。如何为抛出异常的这行代码找到异常处理程序?
答案 0 :(得分:3)
在Visual Studio中打开例外窗口。展开相应的树以查找正在抛出的异常,并选中“Thrown”复选框。下次在调试模式下抛出异常(反未删除)时,调试器将立即中断。
答案 1 :(得分:2)
检查跟踪,以便查看抛出异常的位置。
答案 2 :(得分:2)
将异常设置为break on throw Debug - > “异常”对话框的异常,然后是“公共语言运行时异常”,选中“已抛出”复选框。
一旦抛出任何异常,这将立即停止。
您可能会发现,作为“正常”代码执行的一部分,会抛出大量异常(例如,当您的UI是数据绑定时,套接字异常或Parse异常),在这种情况下,切换 off 'break on throw'复选框,并在违规代码附近放置一个断点。调试断点,然后切换中断并继续调试器。
答案 3 :(得分:0)
您可以尝试捕获应用程序级别的excpetion。只需在代码后添加到Main方法:
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
按以下方法处理所有考试:
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
//Log Excpetion or place breakpoint
}
如果在处理程序中放置断点,您将能够看到StackTrace的异常。
希望这有帮助。