Das ArcGIS 10-Add-In, an dem ich arbeite, ist ziemlich einfach - nur ein Werkzeugsteuerelement und ein andockbares Fenster. Ich behandle die spezifischen Ausnahmen, von denen ich erwarte, dass sie an der Quelle auftreten, und wirf alles andere aus. Aber was ist die beste Vorgehensweise, um diese unerwarteten Ausnahmen im Add-In-Framework zu behandeln?
Ich mache gerade eine catch (System.Exception ex)
und zeige sie in einer MessageBox in jeder Methode, die keine übergeordnete Methode hat, mit der ich umgehen könnte, aber dies scheint nicht die beste Vorgehensweise zu sein (und natürlich jammert FxCop darüber).
Gibt es im ArcGIS 10-Add-In-Framework eine Funktion, mit der ein Ausnahmebehandler der obersten Ebene verbunden werden kann, beispielsweise mit den Ereignissen Application.ThreadException
oder AppDomain.UnhandledException
?
Da Add-Ins nur Klassenbibliotheken und keine Anwendungen ohne Zugriff auf den Startcode der zugrunde liegenden Anwendung sind (soweit ich weiß, müssen diese Ereignisse sehr früh im Startprozess verknüpft werden), ist meine Vermutung nein, aber ich dachte Ich würde fragen, ob Experten Vorschläge dazu haben, wie "unerwartete" Ausnahmen in Add-Ins behandelt werden sollen.
quelle
Antworten:
Soweit ich Ihnen sagen kann, implementieren Sie die Fehlerbehandlung, die ESRI derzeit als Best Practice veröffentlicht. Wenn Sie die nicht behandelten Ausnahmen der Anwendung ( ArcMap ) in den Griff bekommen, werden möglicherweise Meldungen zu Fehlern angezeigt, die nicht Teil Ihres AddIn waren. Die meisten der AddIns, die Sie schreiben, werden wahrscheinlich Schaltflächen sein, und diese haben wirklich nur zwei Hauptrouten, auf denen unerwartete Fehler abgefangen und angezeigt werden ( onClick und onUpdate ).
Denken Sie daran, den Wurf anstelle von Ex zu verwenden. Es gibt einen winzigen Unterschied, der jedoch dazu führt, dass die Fehlerlinie beibehalten wird, wenn sie aus aufgerufenen Funktionen sprudelt.
quelle
Ich arbeite mit einem ArcGIS-Add-In. Mein Add-In besteht aus einem andockbaren Fenster und einer Werkzeugsteuerung. Ich versuche aufgrund meines Tools, das Protokoll des ArcGIS-Absturzes zu führen. Und ich habe einige Erfolge bei der Ausnahmebehandlung auf oberster Ebene mit Application.ThreadException. Da die Thread-Ausnahme nur für UI-Threads funktioniert, wird nach dem Instanziieren des andockbaren Fensters jede Ausnahme, die zum Absturz von ArcGIS führen kann, abgefangen, funktioniert jedoch nicht, bevor das andockbare Fenster instanziiert wird.
Dies führt eine Ausnahmebehandlung der obersten Ebene durch, nachdem die Benutzeroberfläche instanziiert wurde
quelle