La excepción inalcanzable, pt 2

Actualizar: He presentado un informe de error en Microsoft Connect:https://connect.microsoft.com/VisualStudio/feedback/details/568271/debugger-halting-on-exception-thrown-inside-methodinfo-invoke#details

Si puedes reproducir este problema en tu máquina, ¡vota el error para que se pueda solucionar!

Ok, he hecho algunas pruebas y he reducido el problema a algo muy simple:

yo. Cree un método en una nueva clase que arroje una excepción:

public class Class1 {
    public void CallMe() {
        string blah = null;
        blah.ToLower();
    }
}

ii) Cree un MethodInfo que apunte a este método en otro lugar:

Type class1 = typeof( Class1 );
Class1 obj = new Class1();
MethodInfo method = class1.GetMethod( "CallMe" );

iii) Envuelva una llamada a Invoke () en un bloque try / catch:

try {
    method.Invoke( obj, null ); // exception is not being caught!
} catch {
}

iv. Ejecute el programa sin el depurador (funciona bien).

v. Ahora ejecute el programa con el depurador. El depurador detendrá el programa cuando ocurra la excepción, aunque esté envuelto en un controlador de captura que intente ignorarlo. (¡Incluso si pones un punto de interrupción en el bloque de captura, se detendrá antes de que llegue!)

De hecho, la excepción ocurre cuando lo ejecutas sin el depurador también. En un proyecto de prueba simple, se ignora en algún otro nivel, pero si su aplicación tiene algún tipo de manejo de excepciones global, también se activará allí. [ver comentarios]

Esto me está causando un verdadero dolor de cabeza porque sigue disparando el controlador de fallas de mi aplicación, sin mencionar el dolor que es tratar de depurar.

Respuestas a la pregunta(2)

Su respuesta a la pregunta