Dlaczego wyjątek win32 nie jest przechwytywany przez mechanizm obsługi wyjątków c #
Mam aplikację winforms. Informuje, że zaczyna się od Program.cs, gdzie mamy main () zdefiniowane. Umieściłem ten kod w bloku try-catch.
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmSplash());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
if (ex.InnerException != null)
{
MessageBox.Show(ex.InnerException.ToString());
}
}
}
Zawsze, gdy istnieje wyjątek win32, ten mechanizm zawodzi i generowany jest nieobsługiwany komunikat o wyjątku, a aplikacja ulega awarii.
Mam 2 pytania dotyczące tego kodu:
1) Dlaczego wyjątki win32 nie zostały złapane.
2) Czy dobrą praktyką jest wychwytywanie wyjątków na najwyższym poziomie.