Qualquer solução alternativa para obter exceções exteriores de uma exceção lançada dentro de um método chamado em WinForms?

votos
0

No Windows Forms quando uma exceção é lançada a partir de uma chamada para Invokeou BeginInvokee é não processada por qualquer bloco catch, ele pode ser manipulado por um manipulador de controle- ou em nível de aplicativo por meio do Windows.Forms.Application.ThreadExceptionevento. Seu manipulador leva uma EventArgscom uma propriedade Exception, que é a exceção lançada. No entanto, sob o capô, Windows.Forms.Control (indesejavelmente) retira todos mas a excepção mais interior, por esta resposta .

Encontrado este post sobre ele também, mas não sugere qualquer solução alternativa.

(Este momento está a causar-me para obter um rastreamento de pilha trivial em meus logs de erros - um rastreamento de pilha que me diz que os detalhes mais íntimos de, mas não há código de chamada mencionado e não há maneira de descobrir a localização de código de tal erro. )

Existe uma solução? Existe alguma maneira de obter todas as exceções exteriores em meu manipulador de eventos do aplicativo (que está registrando exceções inesperadas para solução de problemas)?

A única sugestão que eu encontrei parece ser o de capturar a exceção dentro do código chamado e encher um pouco de sua informação em Exception.Data, talvez em uma nova exceção - mas se eu sabia o código externo que causou a exceção, eu poderia apenas corrigir o erro em vez de registrá-lo. Em vez disso, como eu poderia fazer isso globalmente sem o envolvimento de um try-catch em torno de cada bloco candidato do código?

Publicado 02/12/2019 em 23:53
fonte usuário
Em outras línguas...                            


1 respostas

Qualquer solução alternativa para obter exceções exteriores de uma exceção lançada dentro de um método chamado em WinForms?

votos
0

No Windows Forms quando uma exceção é lançada a partir de uma chamada para Invokeou BeginInvokee é não processada por qualquer bloco catch, ele pode ser manipulado por um manipulador de controle- ou em nível de aplicativo por meio do Windows.Forms.Application.ThreadExceptionevento. Seu manipulador leva uma EventArgscom uma propriedade Exception, que é a exceção lançada. No entanto, sob o capô, Windows.Forms.Control (indesejavelmente) retira todos mas a excepção mais interior, por esta resposta .

Encontrado este post sobre ele também, mas não sugere qualquer solução alternativa.

(Este momento está a causar-me para obter um rastreamento de pilha trivial em meus logs de erros - um rastreamento de pilha que me diz que os detalhes mais íntimos de, mas não há código de chamada mencionado e não há maneira de descobrir a localização de código de tal erro. )

Existe uma solução? Existe alguma maneira de obter todas as exceções exteriores em meu manipulador de eventos do aplicativo (que está registrando exceções inesperadas para solução de problemas)?

A única sugestão que eu encontrei parece ser o de capturar a exceção dentro do código chamado e encher um pouco de sua informação em Exception.Data, talvez em uma nova exceção - mas se eu sabia o código externo que causou a exceção, eu poderia apenas corrigir o erro em vez de registrá-lo. Em vez disso, como eu poderia fazer isso globalmente sem o envolvimento de um try-catch em torno de cada bloco candidato do código?

Respondeu 02/12/2019 em 23:53
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more