Proceda da seguinte maneira:
- baixe gratuitamente o add-in Rabjump 1.0 da página do RabJump.
- abra a janela de criação de novos procedimentos do Rabjump e crie um código de erro padrão a
ser inserido em cada novo procedimento que você criar usando esta janela. Ainda na janela de novo
procedimento do Rabjump, cheque a caixa de checagem "Tratar Erros". Isto fará com que o RabJump
procure pelo código de tratamento de erros na tab "Tratamento de Erros". Encontrado esse código,
o RabJump inserirá, no código de cada procedimento criado, um comando "On Error GoTo ErrorHandler". Um label com o nome padrão "ErrorHandler" será inserido no final do procedimento.
O código informado na tab "Tratamento de Erros" será então inserido após o label
"ErrorHandler" . O interessante é que você pode usar, dentro desse código, as palavras reservadas do RabJump. As
palavras reservadas serão substituídas conforme o contexto do novo procedimento. Por exemplo, se
você quiser que o tratamento de erros exiba sempre uma mensagem contendo o nome do módulo e do procedimento em que o erro ocorreu e também o número da linha, o seguite código resolve este
problema:
MsgBox Err.Number & " " & Err.Description & vbLf & _
"{ModuleName} – {ProcedureName} na linha " & Erl
Neste exemplo, as palavras reservadas "{ModuleName}" e "{ProcedureName}" serão substituídas pelo
nome do módulo e pelo nome do procedimento no momento em que o RabJump gerar o código do novo
procedimento. Erl é uma propriedade global do VB que contém o número da linha em que o erro
ocorreu. Para numerar as linhas do seu código, o Rabjump também lhe oferece um comando que faz
isto para você a nível de procedimento, módulo ou projeto inteiro.
Uso o Rabjump em tudo que faço e minha receita para tratar erros é criar um tratamento de erros
padrão na janela de Novo Procedimento do Rabjump conforme abaixo:
g_ErrNum = Err.Number
g_errdesc = Err.Description
g_errsource = IIf(Left(Err.Source, 3) <> "em ", "em {ModuleName}_{ProcedureName}, linha: " &
Erl, Err.Source)
Err.Clear
Err.Raise g_errnum, g_errsource, g_errdesc
As variáveis g_ErrNum, g_ErrDesc, g_ErrSource são globais.
Se o erro ocorreu em outro procedimento que não o atual em que o tratamento está se dando, a
propriedade Err.Source já conterá a expressão "em " no seu início. Neste caso mantenho a
informação da fonte do erro e gero o erro apenas para propagá-lo para o procedimento anterior na
ordem de chamada. Caso contrário acrescento a informação de que a fonte do erro é o procedimento
atual e da linha em que ele se deu. Isto precedido da expressão "em ". Mantenho uma rotina
central de tratamento de erros (TrataErros) para exibir a mensagem de erro. Ela é chamada quando
o erro chega a um procedimento de evento como ponto de partida das chamadas ao código que gerou o
erro. Nos procedimentos de evento adiciono o seguinte código para tratar os erros:
Exit {ProcedureType}
ErrorHandler:
g_ErrNum = Err.Number
g_errdesc = Err.Description
g_errsource = IIf(Left(Err.Source, 3) <> "em ", "em {ModuleName}_{ProcedureName}, linha: " &
Erl, Err.Source)
Err.Clear
TrataErros g_ErrNum, g_ErrFDesc, g_ErrSource
Eu não preciso digitar este código. Ele está associado a uma macro de teclado que o Rabjump me
permite criar. Com o Rabjump posso associar uma combinação de teclas a um código que é colado no
ponto do cursor de texto sempre que digito a combinação de teclas. As palavras {ProcedureType},
{ModuleName}, {ProcedureName} são palavras reservadas do Rabjump que ele substitui conforme o
contexto em que o código é colado. Além destas, há muitas outras palavras reservadas do Rabjump
para usar em macros de teclado.
Caso não queira usar a janela de Novos Procedimentos do RabJump para criar meus procedimentos, também posso associar o tratamento de erros padrão que informaria nessa janela a uma macro de teclado. É isto que faço para poder inserir tratamento de erro em procedimentos já criados sem o uso da janela de Novos Procedimentos do RabJump. Expressões usadas constantemente como "On Error Resume Next" ou "On Error GoTo ErrorHandler" também associo a macros de teclado do RabJump.
Exibindo o módulo, o procedimento e a linha em
que o erro ocorreu, você poderá identificar com facilidade a causa de erros em
tempo de execução que ocorram em uma instalação remota e adiantar o reparo
de sua aplicação sem precisar ir até o local em que o erro se deu para
verificar desnecessariamente todas as possibilidades de causa para o erro.