2017-10-23 4 views
0

Ich füge einige benutzerdefinierte Eigenschaften meiner AppInsights Ereignisse Initialize Methode der ITelemetryInitializer verwenden. Einige von ihnen werden aus der Datenbank oder anderen Quellen abgerufen, die möglicherweise fehlschlagen. Die Frage ist, gibt es offizielle Empfehlungen von den Entwicklern, ob eine try-catch Klausel in Initialize Methode enthalten sein sollte?Ausnahme in App Insights Umgang TelemetryInitializer

Von dem, was ich beobachtet habe, eine Ausnahme in der Methode zu werfen wie erwartet nicht daran hindert, Telemetrie erscheinen, obwohl die benutzerdefinierten Eigenschaften nicht gesehen werden können. Kann ich mich auf dieses Verhalten verlassen? Beeinflusst es irgendwie die Leistung, dass ich Ausnahmen nicht manuell behandle und stattdessen den Code von AppInsights behandeln lasse?

Antwort

0

Es hängt davon ab, nicht wahr. Wenn der Telemetrie-Initialisierer mehrere benutzerdefinierte Eigenschaften hinzufügt und der erste in der Zeile mit einer Ausnahme fehlschlägt, möchten Sie versuchen, die anderen hinzuzufügen. Wenn dies der Fall ist, probieren Sie jede benutzerdefinierte Eigenschaft aus.

Wenn es nur eine einzige Eigenschaft ist, oder gar nicht, sobald der erste sollte hinzugefügt werden ausfällt, dann können Sie wählen, nicht die Ausnahme zu behandeln. Meiner Meinung nach möchte ich jedoch Kontrolle über die Ausnahmereplikation haben und selbst dafür entscheiden, sie zu handhaben. (und sie möglicherweise mit einem leeren Haken ignorieren, abhängig von der Situation)

Wenn Sie sie vollständig ignorieren, kann das in Zukunft Probleme verursachen, wenn das SDK beispielsweise so geändert wird, dass die Telemetrie nicht an App Insights gesendet wird, wenn eine Telemetrieinitialisierung fehlschlägt unbehandelte Ausnahme. Zumindest, wenn Sie diesen Weg gehen möchten, werfen Sie einen Blick in den Quellcode des SDK, um zu sehen, was mit der unbehandelten Ausnahme passiert.

+0

Ich habe zu den gleichen Schlussfolgerungen kommen Sie haben, und ich möchte auf jeden Fall nicht auf dieses Verhalten verlassen, es sei denn, es irgendwo dokumentiert ist, das heißt ‚durch das SDK Jede Ausnahme von ITelemetryInitializer.Initialize geschluckt. Ausnahmen manuell erfassen, wenn Sie zusätzliche Aktionen ausführen möchten '. Im Grunde bin ich auf der Suche nach einer offiziellen Erklärung oder Dokumentation von MS, wie zum Beispiel Serilog für Anreicher, die klar angibt, dass ihre Ausnahmen geschluckt und von Design zu Self Log geschrieben werden. –

+0

Was mehrere Eigenschaften anbelangt, habe ich mich dazu entschieden, separate Initialisierer für diesen Zweck zu verwenden, so dass die Wahl zwischen einem "Try-Catch" mit einem leeren Fangen um den gesamten Methodenkörper oder keinem "Try-Catch" besteht. –

+0

Über diese offizielle Dokumentation würde ich nicht darauf zählen, sie zu finden. Diese SKDs sind global dokumentiert, aber ich habe noch nie so detailliert dokumentiert. Am besten ist der Quellcode selbst (https://github.com/Microsoft/ApplicationInsights-Home) oder fragen Sie nach einer offiziellen Erklärung auf einer der GitHub Repo-Seiten. –

Verwandte Themen