Contenuto
Indice 🔎︎

# Istruzione Resume

Reimposta le informazioni sull'errore e indica l'istruzione successiva da eseguire.

### Sintassi:

         Resume [ [0] | label | Next ]

### Parametri:

0: reimposta le informazioni sull'errore ed esegue nuovamente l'istruzione che ha causato l'errore. 0 è opzionale.

label: reimposta le informazioni sull'errore e riprende l'esecuzione dall'etichetta (label) specificata della subroutine corrente.

Next: reimposta le informazioni sull'errore ed esegue le istruzioni successive a quella che ha causato l'errore.

Le informazioni sull'errore vengono costruite con le funzioni Erl, Err e Error$.

- Erl: riga del modulo nella quale si verifica l'errore.

- Err: codice numerico dell'errore.

- Error[$]: descrizione dell'errore.

L'uso di Resume per reimpostare le informazioni sull'errore impedisce che la propagazione della condizione gestita richiami delle routine.

### Codici di errore:

20 Resume senza errori

## Esempi:

Tipiche routine di gestione dell'errore sono: avvertimento dell'utente, correzione dell'errore, registrazione delle informazioni dell'errore o rilancio di errori personalizzati che forniscano delle spiegazioni contenenti delle istruzioni per la risoluzione. Usate Resume label nei casi in cui sono necessari questi meccanismi.

          Sub Error_Handling
          try: On Error GoTo catch
              ' il codice della routine va inserito qui
              Error 91 ' esempio di errore
          finally:
              ' il codice di pulizia della routine va inserito qui
              Exit Sub
          catch:
              Print Erl, Err, Error$
              Resume finally
          End Sub ' Error_Handling

Usate Resume Next, ad esempio, quando segnalate anomalie riscontrate in un processo di iterazione che non deve essere interrotto. Per gestire questi casi, possono essere necessarie diverse routine.

          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

L'uso di Resume senza parametri per eseguire nuovamente l'istruzione fallace, può risolvere determinate situazioni. Questo però può portare a dei cicli infiniti.