Conteúdo
Índice 🔎︎

# Instrução Resume

Redefine a informação de erro e indica o que executar em seguida.

### Sintaxe:

         Resume [ [0] | label | Next ]

### Parâmetros:

0: Redefine a informação de erro e reexecuta a instrução que causou o erro. 0 é opcional.

label: Redefine a informação de erro e executa a instrução no endereço dado por label da rotina atual.

Next: Redefine a informação de erro e executa a instrução que segue àquela que causou o erro.

A informação de erro é feita com as funções Erl, Err e Error$.

- Erl: Número da linha do módulo onde o erro ocorreu.

- Err: Número do erro.

- Error[$]: Descrição do erro.

Ao utilizar Resume para redefinir a informação de erro evita a propagação das condições manipuladas para rotinas que a chamaram.

### Códigos de erro:

20 Continuar sem erro

## Exemplos:

As rotinas típicas de tratamento de erro são: alertar o usuário, consertar o erro, registrar informação do erro, ou relançar erros personalizados que fornecem explicações com instruções para resolver. Utilize a instrução Resume label se precisar de tais mecanismos.

          Sub Error_Handling
          try: On Error GoTo catch
              ' seu código vai aqui
              Error 91 ' exemplo de  erro
          finally:
              ' rotina de limpeza aqui
              Exit Sub
          catch:
              Print Erl, Err, Error$
              Resume finally
          End Sub ' Error_Handling

Utilize Resume Next, por exemplo, quando reportar anomalias encontradas num processo iterativo que não pode ser interrompido. Neste caso pode-se necessitar de 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 falha pode servir em algumas situações. Entretanto pode causar iterações infinitas.