Visual Basic, VB .NET, ASP, Active X, Access, SQL Server

Usando o Rabjump Para Tratar Erros

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.