[visual-studio]c# 不引发的 Windows 窗体应用程序异常 !

发布时间: 2014/2/28 23:12:29
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个奇怪的问题,如果任何人都可以帮助将不胜感激。

我有下面的函数:

void Foo()
{
    MessageBox.Show("here");
    throw new Exception();
}

我在以下两个案例中调用它 (单独-不在同一时间):

private void Form2_Load(object sender, EventArgs e)
{
     // Case 1
     Foo();
}

public Form2()
{
    InitializeComponent();

    // Case 2
    Foo();
}

我可以看到在这两种情况,但 (我收到消息"这里") 该消息框:

[案例 1]在应用程序上 (在调试模式下) 的异常不会打破和保持沉默 !

[案例 2]应用程序正确地中断,我可以看到是在 Foo() 中的异常。

不知道为什么吗?

解决方法 1:

我的猜测是对构造函数的调用看起来有点像这样:

Form2 form = new Form2();
Application.Run(form);

正在这关键部分要调用的构造函数 Form2 直接而它是应用程序类 / 消息泵正在调用 Form2_Load

拼图的最后一块是在 Win32 消息泵处理以不同的方式 (要开始与看见的Application.SetUnhandledExceptionMode 方法)-内部引发的异常什么也可以找到令人困惑是例外情况也处理以不同的方式基于或不在调试配置中是否生成项目。

你可能会有Application.UnhandledException 事件的处理程序-这将解释你所描述的行为。

官方微信
官方QQ群
31647020