【发布时间】:2012-05-17 22:49:48
【问题描述】:
我正在使用 VS 2010 Professional(在 Windows 7 Professional 64 上),使用 WCF 4.0 编写。 我有以下代码:
if (responseMessage.StatusCode == HttpStatusCode.NotFound)
{
throw new ContentNotFoundException(contentId, SSPErrorCode.PartnerRestGetStream404);
}
当将调试器附加到进程时,在“if”语句或之前设置断点,当条件为假(responseMessage.StatusCode 为“OK”)时,调试器将进入“if”语句。然后它跳过“throw”语句而不做任何事情,然后继续执行代码。
我试过了:
重新启动 VS,注销我的 Windows 用户,重新启动,清理解决方案,再次构建它,重新构建它,回收应用程序池,重新启动 IIS,在“if”语句和条件中添加更多代码 - 没有任何效果远。
必须有一个缓存,我可以清理它以摆脱它,但是什么,在哪里?
谷歌搜索我只发现 http:--social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/d4b70fd7-b74a-42ce-a538-7185df3d3254/,所以我尝试手动设置断点,然后它没有在这个类中中断,尽管在其他类中也出现了同样的问题。
我很想在不重新安装 VS 的情况下解决这个问题。提前谢谢!
更新:
- 由于我提出这个问题但找不到答案,我继续我的项目。
- 我偶然发现了这个问题,由 John MacIntyre 在this post 上报告,最终得到了一个简化示例:
using System; namespace IEnumerableBug2 { class Program { static void Main(string[] args) { if (new object() == null) throw new Exception(); try { } catch { } } } }
更新 #2:
请注意,我的方法中还有一个 try-catch 语句,在 'if' 语句之后几行。
我刚刚尝试再次重现此错误,但失败了。我将把这个问题留给可能需要它的其他人,但是,正如我所写的,我不再能够重现这种行为。
【问题讨论】:
-
看起来像是 IDE 中的真正错误。向 MS 报告。
-
当面向 .NET 4.5 时,这似乎已在 Visual Studio 11 中得到修复;但是,当面向 .NET 4.0 时,该错误仍然存在。
-
现在,多年后,我昨天遇到了这个问题。我注意到的是它似乎只发生在 if 语句中的代码只抛出异常时。在我的情况下也是如此。我将其注释掉,并用一些涉及字符串和布尔值的随机语句替换,它跳过了就好了。同时,虽然它似乎没有跳过异常抛出行,但实际上并没有执行它:尽管 Visual Studio 进入了 if 块,但没有抛出异常。奇怪,看起来像一个错误,但只要没有实际发生投掷,就不会严重。
-
@Rob - 是的,这是完全相同的行为。令人困惑,但并不完全影响调试逻辑。
-
通过相关问题回答:stackoverflow.com/a/27552372/19308
标签: visual-studio-2010 debugging