У меня есть приложение Windows Forms с единственным классом Editor
(который наследуется от Form
).
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
используется и для этого инициализируется (впервые) в обработчике события * 1013. * Вызывается статический конструктор и генерируется исключение (отображается только в окне вывода). Остальная часть обработчика события Editor_Load
(cmbConnections.Visible = false;
) невыполнено, как и ожидалось.
Но я не понимаю, , почему мой VS2010 проглотил исключение? Он не прервал отладку. Это яне включены ни в один блок try / catch.Продолжилось выполнение программы с главным окном.Кажется, что Editor_Load
был выполнен в другом потоке.
Я вижу сообщения в окне вывода:
Исключение первого шанса типа 'System.InvalidOperationException' произошло в Editor.exe
Исключение первого шансатипа «System.TypeInitializationException» произошла в Editor.exe
, но выполнение просто не прервалось в режиме отладки.
Вот некоторые из моих опций, которые, я считаю, могут повлиять на этоповедение:
Свойства проекта-> Build-> General-> Optimize code UNCHECKED.
Tools-> Options-> Debugging-> General-> Enable Just My Code is CHECKED.
В настройках исключений установлен флажок для "необработанного пользователя".
Я что-то упустил?Это нормальное поведение?Я думал, что VS2010 скинет на ЛЮБОЕ необработанное исключение.И вот этот не обработан и до сих пор не ломается.