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'
              Error 91 ' example error
          finally:
              ' routine cleanup code goes here
              Exit Sub
          catch:
              Print Erl, Err, Error$
              Resume finally
          End Sub ' Error_Handling

Use Resume Next, for example, when reporting anomalies encountered for an iterating process that must not be interrupted. In which case multiple handling routines may be required.

          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

Using Resume without parameters to re-execute the faulty instruction can fit certain situations. However that may cause a never ending loop.

Necessitamos da sua ajuda!