Mo *_*our 9 .net c# visual-studio
我有一个奇怪的问题,如果有人可以帮忙,我将不胜感激.
我有以下功能:
void Foo()
{
MessageBox.Show("here");
throw new Exception();
}
Run Code Online (Sandbox Code Playgroud)
我在以下两种情况下调用它(单独 - 不是同时):
private void Form2_Load(object sender, EventArgs e)
{
// Case 1
Foo();
}
public Form2()
{
InitializeComponent();
// Case 2
Foo();
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下我都可以看到消息框(我在这里收到消息)但是:
[案例1]应用程序不会在异常(在调试模式下)中断并保持静默!
[案例2]应用程序正确中断,我可以看到Foo()中存在异常.
知道为什么吗?
Jus*_*tin 11
我的猜测是对构造函数的调用看起来有点像这样:
Form2 form = new Form2();
Application.Run(form);
Run Code Online (Sandbox Code Playgroud)
关键部分是你Form2
直接调用它的构造函数,它是正在调用的应用程序类/消息泵Form2_Load
.
最后一个难题是Win32消息泵内部抛出的异常处理方式不同(从查看Application.SetUnhandledExceptionMode方法开始) - 您可能会发现令人困惑的是,异常也会根据项目是否构建而以不同方式处理在Debug配置中与否.
您可能有Application.UnhandledException事件的处理程序 - 这将解释您描述的行为.
归档时间: |
|
查看次数: |
2966 次 |
最近记录: |