que no va a volver a crear la misma semántica que la captura VB cuando la expresión. Hay una diferencia clave. La VB Cuando la expresión se ejecuta antes de que se desenrolle la pila. Si tuviera que examinar la pila en el momento de un Filtro, realmente vería el marco donde se lanzó la excepción.
Tener un if en el bloque catch es diferente porque el bloque catch se ejecuta después de desenrollar la pila. Esto es especialmente importante cuando se trata de informes de errores. En el escenario VB, tiene la capacidad de bloquearse con un seguimiento de la pila, incluido el error. No es posible obtener ese comportamiento en C#.
EDIT:
escribió un detailed blog post sobre el tema.
Revisa esta página http://stackoverflow.com/questions/4269189/c-exception-monitor-with-filtering;) – Edward83