Update: ich einen Fehlerbericht an Microsoft Connect eingereicht haben: https://connect.microsoft.com/VisualStudio/feedback/details/568271/debugger-halting-on-exception-thrown-inside-methodinfo-invoke#detailsDie uncatchable Ausnahme, pt 2
Wenn Sie dieses Problem auf Ihrem Computer wiedergeben können, benutzen Sie bitte den Bug upvote so es behoben werden kann!
Ok Ich habe einige Tests gemacht, und ich habe das Problem zu etwas sehr einfach reduziert:
i. Erstellen Sie eine Methode in einer neuen Klasse, die eine Ausnahme auslöst:
ii. Erstellen Sie eine MethodInfo, die auf diese Methode woanders verweist:
Type class1 = typeof(Class1);
Class1 obj = new Class1();
MethodInfo method = class1.GetMethod("CallMe");
iii. Umleiten eines Aufrufs an Invoke() in einem try/catch-Block:
iv. Führen Sie das Programm ohne den Debugger (funktioniert gut).
v. Führen Sie jetzt das Programm mit dem Debugger aus. Der Debugger wird das Programm anhalten, wenn die Ausnahme auftritt, obwohl es in einen Catch-Handler eingepackt ist, der versucht, es zu ignorieren. (Auch wenn Sie einen Haltepunkt im Catch-Block setzen, wird er anhalten, bevor er ihn erreicht!)
Tatsächlich tritt die Ausnahme auf, wenn Sie es auch ohne den Debugger ausführen. In einem einfachen Testprojekt wird es auf einer anderen Ebene ignoriert, aber wenn Ihre Anwendung eine globale Ausnahmebehandlung hat, wird sie auch dort ausgelöst.
[siehe Kommentare]
Dies verursachen mir einen echten Kopfschmerzen, weil es Crash-Handler meiner App hält Auslösung, den Schmerz nicht zu erwähnen, es zu debuggen, um zu versuchen ist.
+1 führen, dass Sie sich die Zeit nahmen diese in einem gesunden Beispiel zu reduzieren –
hier ansehen : http://stackoverflow.com/questions/2724703/why-does-vs2010-always-break-on-exception-from-methodinfo-invoke –
Haben Sie die Ausnahme als "Stop wenn Wurf" in Visual Studio zu stoppen Dieses Verhalten, gehen Sie zu Debug | Exceptions und deaktivieren Sie Stop bei throw. –