¿Por qué la excepción de win32 no es detectada por el mecanismo de manejo de excepciones de c #?

Tengo una aplicación winforms. Las formas de inicio comienzan con Program.cs donde tenemos main () definido. He puesto este código en el bloque 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());
            }
        }
    }

Siempre que hay una excepción de win32, este mecanismo falla y se lanza un mensaje de excepción no manejado y la aplicación se bloquea.
Tengo 2 preguntas con respecto a este código:

1) ¿Por qué no se capturan las excepciones de win32?

2) ¿Es una buena práctica capturar excepciones en el nivel más alto?

Respuestas a la pregunta(6)

Su respuesta a la pregunta