d
Habilita ou desabilita o tratamento de erros.
Sintaxe
Em Caso de Erro, Retomar Próximo
On Error GoTo 0
Comentários
Se você não usar uma instrução On Error Resume Next em qualquer lugar do seu código, qualquer erro de tempo de execução que ocorra poderá fazer com que uma mensagem de erro seja exibida e a execução do código seja interrompida. No entanto, o host que executa o código determina o comportamento exato. Às vezes, o host pode optar por lidar com esses erros de maneira diferente. Em alguns casos, o depurador de script pode ser chamado no ponto do erro. Em outros casos, pode não haver indicação aparente de que ocorreu algum erro porque o host não deseja notificar o usuário. Novamente, trata-se basicamente de uma função de como o host lida com quaisquer erros que ocorram.
Em qualquer procedimento, um erro não será necessariamente fatal se o tratamento de erros estiver habilitado em algum lugar ao longo da pilha de chamadas. Se o tratamento de erros local não estiver habilitado em um procedimento e ocorrer um erro, o controle será passado de volta pela pilha de chamadas até que um procedimento com o tratamento de erros habilitado seja encontrado e o erro seja tratado nesse ponto. Se nenhum procedimento na pilha de chamadas tiver o tratamento de erros habilitado, uma mensagem de erro será exibida nesse ponto e a execução será interrompida ou o host tratará o erro conforme apropriado.
A instrução On Error Resume Next faz com que a execução continue com a instrução que sucede a instrução que causou o erro de tempo de execução, ou com a instrução que sucede a chamada mais recente do procedimento que contém a instrução On Error Resume Next. Isso permite que a execução continue apesar de um erro de tempo de execução. Em seguida, você pode criar a rotina de tratamento de erros em linha no procedimento.
A instrução On Error Resume Next se torna inativa quando outro procedimento é chamado. Por esse motivo, você deve executar uma instrução On Error Resume Next em cada rotina chamada se quiser o tratamento de erros em linha dentro dessa rotina. Quando um procedimento é encerrado, o recurso de tratamento de erros é revertido para o tratamento de erros que estava em vigor antes da entrada no procedimento encerrado.
Use On Error GoTo 0 para desabilitar o tratamento de erros se você o tiver habilitado anteriormente usando On Error Resume Next.
O exemplo a seguir ilustra o uso da instrução On Error Resume Next.
On Error Resume Next ' Ignore errors and continue execution
' Attempt to divide by zero (this will cause an error)
Dim result
result = 10 / 0
err1 = Err.Number
' Check if an error occurred
If err1 <> 0 Then
Err.Clear ' Clear the error
End If
' Script continues after error handling.
Explicação:
A linha result = 10 / 0 causará um erro de divisão por zero.
Como a instrução On Error Resume Next está ativa, o script não é interrompido e verificamos o erro usando Err.Number.
Em seguida, eliminamos o erro usando Err.Clear após tratá-lo.
Pontos Importantes para Lembrar:
Err.Number: Esta propriedade mantém o código de erro se ocorrer um erro. Se nenhum erro ocorrer, será 0.
Err.Description: Fornece a descrição do último erro que ocorreu.
Err.Clear: Limpa as informações de erro depois que você as manipula, de modo que os erros subsequentes não afetem o script.
Exemplo 1:
On Error Resume Next ' Ignore errors and continue execution ' Attempt to divide by zero (this will cause an error) Dim result result = 10 / 0 err1 = Err.Number On Error GoTo 0 ' Default error handling is restored ' Now, any error that occurs will stop the script result = 10 / 0 'Error will be thrown