У меня есть две формы. У моей первой формы есть кнопка на ней, которая должна загружать вторую форму при нажатии кнопки. Вторая форма генерирует исключение в событии Load. Код, который показывает вторую форму, находится в блоке try-catch. Однако исключение не попадает в этот блок try-catch, и я получаю окно «необработанное исключение», когда я нажимаю кнопку. Вот код:Невозможно поймать исключение из формы.Показать
public partial class FirstForm : Form
{
private void button_Click(object sender, EventArgs e)
{
try
{
// Showing this form will throw an exception
SecondForm form = new SecondForm();
form.Show();
}
catch (Exception ex)
{
// The exception is not caught here
MessageBox.Show(ex.ToString());
}
}
}
public partial class SecondForm : Form
{
// Throw an exception when this form is shown
private void form_Load(object sender, EventArgs e)
{
throw new Exception("something");
}
}
Почему не исключение попало в мой код?
[Связанное сообщение на форумах MSDN] (https://social.msdn.microsoft.com/Forums/vstudio/en-US/b8c82b79-47d4-42ab-abdb-ff71d67a0022/ исключение-брошено-в-formload-события не-никогда пойманное-на-язь? форум = vsdebug). Разрешение не является реальным, но может помочь –
Посмотрите на [это] (http://stackoverflow.com/questions/3209706/why-the-form-load-cant-catch-exception) Вопрос SO (последний ответ). –
Я пробовал эти решения, прежде чем публиковать свой вопрос. Опция «Предпочитаю 32-бит» уже была отключена в моих настройках сборки. Я на Windows 10, и этот ответ сказал, что эта проблема была исправлена в Windows 8 и более поздних версиях, но у меня все еще проблема. Ответы, которые я видел, говорят об исключении, которое молчаливо проглатывается или только является проблемой во время работы отладчика, но это не то, что я испытываю. Мои исключения пузырятся и приводят к сбою программы, поэтому они не затупляются, но они не позволяют мне справляться с ними. –