O complemento do ArcGIS 10 em que estou trabalhando é bastante simples - apenas um controle de ferramenta e uma janela acoplável. Estou lidando com as exceções específicas que prevejo ocorrer na fonte e lançando todo o resto, mas qual é a melhor prática para lidar com essas exceções inesperadas na estrutura de suplementos?
Atualmente, estou apenas fazendo um catch (System.Exception ex)
e mostrando em um MessageBox em todos os métodos que não possuem um método de nível superior em que eu possa lidar, mas isso não parece a melhor prática (e, é claro, o FxCop está choramingando) sobre isso).
Existe alguma facilidade na estrutura de complemento do ArcGIS 10 para que um manipulador de exceção de nível superior seja conectado, por exemplo, aos eventos Application.ThreadException
ou AppDomain.UnhandledException
?
Como os suplementos são apenas bibliotecas de classes e não aplicativos sem acesso ao código de inicialização do aplicativo subjacente (pelo que eu entendo, esses eventos precisam ser conectados muito cedo no processo de inicialização), acho que não, mas pensei Gostaria de perguntar se algum especialista lá fora tem alguma sugestão sobre como exceções "inesperadas" devem ser tratadas em suplementos.
fonte
Respostas:
Tanto quanto posso dizer, você está implementando o tratamento de erros que a ESRI está lançando no momento como prática recomendada. Se você agarrar as exceções não tratadas do ArcMap (aplicativo ), poderá exibir mensagens sobre erros que não fazem parte do seu AddIn. A maioria dos AddIns que você escreve provavelmente será de botões e esses realmente têm apenas duas rotas principais para que erros inesperados sejam capturados e exibidos ( onClick e onUpdate ).
Lembre-se de usar o ' throw ' em vez de ' throw ex '. Há uma diferença minuciosa, mas resulta em reter a linhagem do erro, à medida que borbulha das funções chamadas.
fonte
Estou trabalhando com um suplemento do ArcGIS. Meu suplemento consiste em uma janela acoplável e um controle de ferramenta. Estou tentando manter o registro da falha do ArcGIS por causa da minha ferramenta. E obtive algum sucesso no tratamento de exceções de nível superior usando Application.ThreadException. Como a exceção de encadeamento funciona apenas para o encadeamento da interface do usuário, após instanciar a janela acoplável, qualquer exceção que possa causar uma falha no ArcGIS, ela captura isso, mas não funciona antes de instanciar a janela acoplável.
Isso manipula exceções de nível superior após instanciar a interface do usuário
fonte