无声例外,

我在64位遇到了这个奇怪的静默异常问题。 这是什么造成这种行为? 我想了解为什么会出现这种情况以及推荐的解决方案是什么? 消失的OnLoad异常 微软 - 无声的例外 KB976038 主要:
    try
    {
        Application.Run(new Form1());
    }
    catch
        (Exception ex)
    {
        MessageBox.Show("Error");
    }

private void Form1_Load(object sender, EventArgs e)
{
    throw new Exception("oh no!");
}
    
已邀请:
为了加载表单,你的代码将调用一个内核函数来创建表单的窗口,这个内核函数将通过发送一个调用你的
OnLoad
方法的消息来回调你的代码。如果在该方法中引发异常,则异常处理机制将调用堆栈移回内核模式边界。 在x86上,异常可以通过此边界并返回到原始调用者。在x64上,当它到达边界时停止并且无法继续。在XP64和Vista中,异常被吞下(被忽略),而一个64位的应用程序与一个说明它是Win7兼容的清单会在发生这种情况时崩溃。要在64位Win7上获取其他操作系统或32位应用程序的崩溃行为,请参阅KB976038。 对于在x64上作为内核模式回调而调用的任何事件处理程序,都会发生此行为。     

要回复问题请先登录注册