我有一个带有单个Editor
类(继承自Form
)的 Windows 窗体应用程序。
public partial class Editor : Form
{
public Editor()
{
InitializeComponent();
Load += Editor_Load;
}
private void Editor_Load(object sender, EventArgs e)
{
cmbConnections.DataSource = ConnectionManager.Connections;
cmbConnections.Visible = false;
}
}
除了设计器生成的代码之外,这是表单的唯一代码(仅包含一个组合框 ( cmbConnections
)。
该类ConnectionManager
是具有静态构造函数的静态类。它的构造函数进行一些初始化,然后测试一些临界条件。如果满足条件,构造函数会抛出异常。但是,此异常不会在 Visual Studio 2010 中的调试模式下中断。为了对此进行测试,我只throw new Exception()
放入了ConnectionManager
的静态构造函数。在事件处理程序ConnectionManager
中使用并因此初始化(第一次) 。Editor_Load
调用静态构造函数并抛出异常(仅在输出窗口中可见)。正如预期的那样,Editor_Load
事件处理程序 ( )的其余部分没有被执行。cmbConnections.Visible = false;
但是我不明白的是为什么我的VS2010会吞下异常?它没有破坏调试。它不包含在任何 try/catch 块中。它继续在主窗口中执行程序。几乎看起来好像Editor_Load
是在另一个线程上执行的。
我可以在输出窗口中看到消息:
在 Editor.exe 中发生了“System.InvalidOperationException”类型的第一次机会异常
在 Editor.exe 中发生了“System.TypeInitializationException”类型的第一次机会异常
但执行根本没有在调试模式下中断。
以下是我认为可能会影响此行为的一些选项:
项目属性->构建->常规->优化代码未选中。
工具->选项->调试->常规->仅启用我的代码已选中。
在异常设置中,“用户未处理”的复选框已选中。
我错过了什么吗?这种行为正常吗?我认为 VS2010 会抛出任何未处理的异常。而这里这个是未处理的,仍然没有中断。