Frage

Dies ist wahrscheinlich unrealistisch, aber wäre es möglich, eine Komponente ermöglichen alle ersten Chance Ausnahmen benachrichtigt wird in ihrem Prozess auftreten?

Wir haben einige von Drittanbietern (von uns beauftragten) Komponenten, die alles zu tun, scheitern aber excepitions essen und die Politik der Geschäftsbeziehung macht die ganze Tortur einen königlichen Schmerz.

Wir sind uns bewusst, dass einige unserer Code ist die enttäuschende Wirkung zu lassen Ausnahmen in den Abgrund Durchführung verschwinden, statt unsere zentrale Ausnahme Logger.

Ich gehe davon aus unserer Anwendung als Kindprozess eines Debugging-Anwendung werden müsste begonnen, die Wirkung zu erzielen, aber ich glaube es lohnt sich zu fragen:)

War es hilfreich?

Lösung

Net 4.0 hinzugefügt tatsächlich die AppDomain.FirstChanceException Veranstaltung . Sie feuert, bevor ein catch-Block ausgeführt wird.

Das MSDN-Artikel hat einige Beispiele.

Im Grunde fügen Sie nur einen Event-Handler wie folgt aus:

    AppDomain.CurrentDomain.FirstChanceException += 
        (object source, FirstChanceExceptionEventArgs e) =>
        {
            Console.WriteLine("FirstChanceException event raised in {0}: {1}",
                AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);
        };

Andere Tipps

Sie können den .net Profilerstellungs-API verwenden, Benachrichtigungen von Ausnahmen bei allen Arten von Staaten zu bekommen, das sind die zur Verfügung stehenden Methoden:

ExceptionThrown
ExceptionSearchFunctionEnter
ExceptionSearchFunctionLeave
ExceptionSearchFilterEnter
ExceptionSearchFilterLeave
ExceptionSearchCatcherFound
ExceptionOSHandlerEnter
ExceptionOSHandlerLeave
ExceptionUnwindFunctionEnter
ExceptionUnwindFunctionLeave
ExceptionUnwindFinallyEnter
ExceptionUnwindFinallyLeave
ExceptionCatcherEnter
ExceptionCatcherLeave
ExceptionCLRCatcherFound
ExceptionCLRCatcherExecute

die Profilierung api Verwendung ist nicht ganz für das schwache des Herzens; haben einen Blick auf http://msdn.microsoft.com/en-us/ Bibliothek / ms404386.aspx als Einstiegspunkt für Ihre Forschung und http : //msdn.microsoft.com/en-us/library/bb384687.aspx Ausnahme speziell Handhabung.

Ich bin mir nicht bewusst auf einfache Art und Weise es in Ihrem verwalteten Code wie

zu tun
AppDomain.FirstChanceException += new EventHandler...

Veranstaltung oder ähnliches.

EDIT: Eine möglicherweise bessere Alternative ist mit dem unamanaged Debugging API statt.

Im Grunde können Sie einen Satz ICorManagedCallback / ICorManagedCallback2 Rückruf mit ICorDebug :: SetManagedHandler und Rückrufe erhalten, wenn Ausnahmen auftreten.

Ich bin nicht genug, um in diesem Bereich erfahren zu wissen, was die Vorteile / Nachteile der Profilierung api sind vorbei.

Ich hatte nur einen Blick auf die

scroll top