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.

questionAnswers(6)

yourAnswerToTheQuestion