Conteúdo

# Declaração de retomada

Redefine as informações de erro e indica o que deve ser executado a seguir.

### Sintaxe:

         Resume [ [0] | label | Next ]

### Parâmetros:

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.

### Códigos de erro

20 Retomar sem erros

## Exemplos:

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.

Necessitamos da sua ajuda!