Ajuda do LibreOfficeDev 26.8
Redefine as informações de erro e indica o que deve ser executado a seguir.
Resume [ [0] | label | Next ]
0: Repõe as informações de erro e volta a executar a instrução que causou o erro. 0 é opcional.
label: Reinicia as informações de erro e retoma a execução no label especificado da sub-rotina atual.
Seguinte: Repõe as informações de erro e executa a instrução seguinte à que causou o erro.
As informações de erro são criadas com as funções Erl, Err e Error$.
Erl: Número da linha do módulo onde ocorre o erro.
Err: Número do erro.
Erro[$]: Descrição do erro.
A utilização de Resume para reiniciar as informações de erro impede a propagação da condição tratada para as rotinas de chamada.
As rotinas típicas de tratamento de erros consistem em: alertar o utilizador, corrigir o erro, registar informações sobre o erro ou re-lançar erros personalizados que forneçam explicações com instruções de resolução. Utilize Resume label quando forem necessários tais mecanismos.
Sub Error_Handling
try: On Error GoTo catch
'o código de rotina vai aqui'
Erro 91 ' exemplo de erro
finally:
'O código de limpeza de rotina vai aqui'
Exit Sub
catch:
Print Erl, Err, Error$
Resume finally
End Sub ' Error_Handling
Utilize Resume Next, por exemplo, ao comunicar anomalias detetadas num processo iterativo que não deve ser interrompido. Nesse caso, poderão ser necessárias várias rotinas de tratamento.
Sub Iteration
planets = Array("☿","♀","♁","♂","♃","♄","⛢","♆")
try:
On Error GoTo ReportAndProcessNext
For ndx = -3 To 11 Step 1
MsgBox planets(ndx)
Next
On Error GoTo 0 ' Stop error catching
finally:
Exit Sub
ReportAndProcessNext:
Print "Error "& Err &" at line "& Erl &" - "& Error$
Resume Next
End Sub ' Iteration
Utilizar Resume sem parâmetros para reexecutar a instrução com erro pode ser adequado em determinadas situações. No entanto, isso pode causar um ciclo infinito.