Я пытаюсь понять, как программа C# обрабатывает необработанное исключение.
Я делаю свое тестирование в проекте windows форм. Если ответ отличается в других типах проектов, пожалуйста, я знаю.
Я запускаю программу из файла .exe, а не из отладчика Visual Studio.
Код:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//timer1.Interval = 10000
private void timer1_Tick(object sender, EventArgs e)
{
//throw new Exception(Thread.CurrentThread.ManagedThreadId.ToString() + " This is an exception");
}
}
static class Program
{
static Form1 newForm;
static void Main()
{
Thread FormThread = new Thread(NewForm);
FormThread.Start();
Thread.Sleep(5000);
//throw new Exception(Thread.CurrentThread.ManagedThreadId.ToString() + " This is an exception");
}
static void NewForm()
{
newForm = new Form1();
Application.Run(newForm);
}
}
У меня вопрос, что будет windows ответ на необработанное исключение в C# программе?
в приведенном выше примере:
Если исключение выдается из функции timer1_Tick (путем удаления префикса комментария), я получаю следующее сообщение:
Если исключение выдается из функции Main (путем удаления префикса комментария), я получаю следующее сообщение:
почему я получаю 2 разных сообщения и как Windows / программа «выбирает», какое сообщение выдавать.
Спасибо.