Я вижу другое поведение с исключениями, которые пойманы или не пойманы, когда я отлаживаю, и когда я запускаю скомпилированный .exe. У меня две формы (Form1 и Form2). Form1 имеет кнопку на нем, которая создает экземпляр и вызывает ShowDialog на Form2. Form2 имеет кнопку на ней, которая преднамеренно производит деление на нулевую ошибку. Когда я отлаживаю, блок catch в Form1 попадает. Когда я запускаю скомпилированный файл .exe, он НЕ попадает, и вместо этого я получаю окно сообщения, в котором говорится: "Необработанное исключение произошло в вашем приложении. Если вы нажмете" продолжить ", приложение проигнорирует эту ошибку и попытается продолжить. нажмите" Выход ", приложение сразу закроется... Попытка деления на ноль". Мой вопрос: почему у вас возникает другое поведение при отладке и при работе с .exe? Если это ожидаемое поведение, то считалось бы необходимым разместить блоки try/catch в каждом отдельном обработчике событий? Это похоже на сумасшедшую смерть, не так ли?
Вот код для Form1.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
Form2 f2 = new Form2();
f2.ShowDialog();
}
catch(Exception eX)
{
MessageBox.Show( eX.ToString()); //This line hit when debugging only
}
}
}
Здесь код Form2:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int x = 0;
int y = 7 / x;
}
}