Dodatek ArcGIS 10, nad którym pracuję, jest dość prosty - tylko kontrolka narzędzia i okno do dokowania. Zajmuję się konkretnymi wyjątkami, które, jak się spodziewam, występują u źródła i rzucają wszystko inne, ale jaka jest najlepsza praktyka obsługi tych nieoczekiwanych wyjątków w ramach dodatków?
Obecnie właśnie robię a catch (System.Exception ex)
i pokazuję to w MessageBox w każdej metodzie, która nie ma metody wyższego poziomu, w której mogłabym to obsłużyć, ale nie wydaje się to najlepszą praktyką (i oczywiście FxCop marudzi o tym).
Czy w środowisku dodatków ArcGIS 10 jest jakaś funkcja umożliwiająca podłączenie obsługi wyjątków najwyższego poziomu, na przykład do zdarzeń Application.ThreadException
lub AppDomain.UnhandledException
?
Widząc, że dodatki to tylko biblioteki klas, a nie aplikacje bez dostępu do kodu startowego aplikacji bazowej (z tego, co zbieram, te zdarzenia muszą być podłączone na bardzo wczesnym etapie procesu uruchamiania), zgaduję, że nie, ale pomyślałem Zapytałbym, czy jakikolwiek ekspert ma jakieś sugestie, jak „nieoczekiwane” wyjątki powinny być obsługiwane w dodatkach.
źródło
Odpowiedzi:
O ile mogę powiedzieć, wdrażasz obsługę błędów, którą ESRI obecnie przedstawia jako najlepszą praktykę. Jeśli chcesz uchwycić nieobsługiwane wyjątki aplikacji ( ArcMap ), możesz potencjalnie wyświetlać komunikaty o błędach, które nie były częścią Twojego AddIn. Większość twoich AddInsów będzie prawdopodobnie przyciskami, a te naprawdę mają tylko dwie główne trasy, które wychwytują i wyświetlają nieoczekiwane błędy ( onClick i onUpdate ).
Pamiętaj tylko, aby użyć „ rzut ” zamiast „ rzut ex ”. Różnica jest niewielka, ale powoduje zachowanie linii błędu, gdy wyskakuje z wywoływanych funkcji.
źródło
Pracuję z dodatkiem ArcGIS. Mój dodatek składa się z dokowalnego okna i kontrolki narzędzia. Staram się prowadzić dziennik awarii ArcGIS z powodu mojego narzędzia. I odnoszę sukcesy w obsłudze wyjątków najwyższego poziomu za pomocą Application.ThreadException. Ponieważ wyjątek wątku działa tylko dla wątku interfejsu użytkownika, po utworzeniu okna dokowalnego każdy wyjątek, który może być przyczyną awarii ArcGIS, wychwytuje go, ale nie działa przed utworzeniem okna dokowalnego.
Umożliwia to obsługę wyjątków na najwyższym poziomie po utworzeniu interfejsu użytkownika
źródło