private void button1_Click(object sender, EventArgs e)
{
///IDE will notify me of this exception
throw new Exception();
}
private void Form1_Load(object sender, EventArgs e)
{
//IDE will not notify me of this exception
throw new Exception();
//code will not execute
MessageBox.Show("test");
}为什么?
正确的答案是ChrisA提到的。微软引用了一些话:
这是一个已知的x64版本的缺陷,以及异常的处理方式。在调试过程中解决此问题的一种方法是转到调试->异常,并为您感兴趣的异常类型选择“引发”。这将在异常第一次被击中时(在Windows吞噬它之前)停止调试器。
此错误被关闭为“外部”,因为此行为是由于x64版本的Windows处理异常的方式造成的。当用户模式异常跨越内核转换时,x64版本的Windows不允许异常传播。因此,附加调试器不知道发生了异常,导致调试器无法在未处理的异常上中断。 不幸的是,Visual团队无法解决这一问题,这是操作系统设计的结果。有关此问题的所有反馈都应提交给Windows;但是,Windows认为这是“正确的”操作系统设计,并认为x86行为“不正确”。
此修补程序尚未经过全面测试。因此,它只适用于遇到此电子邮件末尾表格中"KB文章编号“字段中所列的一个或多个Microsoft知识库文章中所描述的问题的系统或计算机。如果您不确定是否有任何特殊的兼容性或安装问题与此修补程序相关联,我们鼓励您等待下一个service版本。service将包含此修补程序的完整测试版本。我们理解,很难确定是否有任何兼容性或安装问题与修补程序相关联。如果您希望确认此修补程序解决了您的特定问题,或者希望确认是否有任何特殊的兼容性或安装问题与此修补程序相关联,则客户支持服务中的支持专业人员可以帮助您解决此问题。
发布于 2010-12-18 17:54:59
您是在x64机器上开发吗?
如果是这样的话,您可能想看看这。
该线程还提到了整个问题的非常详细的解释。
这一点,以及另一个节目停止者 (无论如何,对我来说,这些解决方案对我和我的同事都不起作用)在x64上,导致了用win7 x86重建我的开发箱。
这些问题现在都解决了。但这很令人失望。
https://stackoverflow.com/questions/4478909
复制相似问题