El complemento ArcGIS 10 en el que estoy trabajando es bastante simple: solo un control de herramienta y una ventana acoplable. Estoy manejando las excepciones específicas que preveo que ocurran en la fuente y lanzo todo lo demás, pero ¿cuál es la mejor práctica para manejar esas excepciones inesperadas en el marco de complementos?
Actualmente solo estoy haciendo una catch (System.Exception ex)
y mostrándola en un MessageBox en cada método que no tiene un método de nivel superior en el que pueda manejarlo, pero esto no parece ser la mejor práctica (y, por supuesto, FxCop se queja) al respecto).
¿Existe alguna instalación en el marco de complementos de ArcGIS 10 para conectar un controlador de excepciones de nivel superior, por ejemplo a los eventos Application.ThreadException
o AppDomain.UnhandledException
?
Como los complementos son solo bibliotecas de clases y no aplicaciones sin acceso al código de inicio de la aplicación subyacente (por lo que deduzco, esos eventos tienen que conectarse muy temprano en el proceso de inicio), supongo que no, pero pensé Preguntaría si algún experto por ahí tiene alguna sugerencia sobre cómo se deben manejar las excepciones "inesperadas" en los complementos.
fuente
Respuestas:
Por lo que puedo decir, está implementando el manejo de errores que ESRI está implementando actualmente como la mejor práctica. Si tuviera que apoderarse de las excepciones no controladas de la aplicación ( ArcMap ), podría mostrar mensajes sobre errores que no formaban parte de su complemento. La mayoría de los AddIns que escriba probablemente serán botones y esos solo tienen dos rutas principales en las que se detectarían y mostrarían errores inesperados ( onClick y onUpdate ).
Solo recuerda usar el ' throw ' en lugar de ' throw ex '. Hay una pequeña diferencia, pero resulta en retener el linaje del error a medida que emerge de las funciones llamadas.
fuente
Estoy trabajando con un complemento de ArcGIS. Mi complemento consiste en una ventana acoplable y un control de herramienta. Estoy tratando de mantener un registro del bloqueo de ArcGIS debido a mi herramienta. Y obtengo algo de éxito en el manejo de excepciones de nivel superior usando Application.ThreadException. Como la excepción de subproceso funciona solo para el subproceso de interfaz de usuario, después de crear una instancia de la ventana acoplable, cualquier excepción que pueda causar un bloqueo de ArcGIS, lo detecta, pero no funciona antes de crear una instancia de la ventana acoplable.
Esto hace el manejo de excepciones de nivel superior después de instanciar la IU
fuente