Das wird die gleiche Semantik wie die VB fangen, wenn Ausdruck nicht neu erstellen. Es gibt einen entscheidenden Unterschied. Der VB-When-Ausdruck wird ausgeführt, bevor der Stapelabbau auftritt. Wenn Sie den Stapel an der Stelle eines WENN-Filters untersuchen würden, würden Sie tatsächlich den Rahmen sehen, in dem die Ausnahme ausgelöst wurde.
Ein if im catch-Block ist anders, weil der catch-Block ausgeführt wird, nachdem der Stapel abgewickelt wurde. Dies ist besonders wichtig bei der Fehlerberichterstattung. Im VB-Szenario können Sie mit einer Stack-Ablaufverfolgung einschließlich des Fehlers abstürzen. Es ist nicht möglich, dieses Verhalten in C# zu erhalten.
EDIT:
Schrieb ein detailed blog post zum Thema.
Überprüfen Sie diese Seite http://StackOverflow.com/Questions/4269189/c-Exception-Monitor-with-Filtering;) – Edward83