Spis treści

# Instrukcja Resume

Resetuje informacje o błędach i wskazuje, co należy wykonać dalej.

### Składnia:

         Resume [ [0] | label | Next ]

### Parametry:

0: Resetuje informacje o błędzie i ponownie wykonuje instrukcję, która spowodowała błąd. 0 jest opcjonalne.

label: Resetuje informacje o błędzie i wznawia wykonywanie pod określoną etykietą bieżącego podprogramu.

Next: Resetuje informacje o błędzie i wykonuje instrukcję następującą po tej, która spowodowała błąd.

Informacje o błędach są tworzone za pomocą funkcji Erl, Err i Error$.

- Erl: Numer wiersza modułu, w którym wystąpił błąd.

- Err: Numer błędu.

- Error[$]: Opis błędu.

Korzystanie z Resume do resetowania informacji o błędach zapobiega propagacji obsłużonego warunku do procedur wywołujących.

### Kody błędów:

20 Kontynuacja z pominięciem błędu

## Przykłady:

Typowe procedury obsługi błędów to: ostrzeganie użytkownika, naprawianie błędu, rejestrowanie informacji o błędzie lub ponowne zgłaszanie błędów niestandardowych, które zawierają wyjaśnienia wraz z instrukcjami rozwiązania. Użyj Resume label, gdy wymagasz takich mechanizmów.

          Sub Error_Handling
          try: On Error GoTo catch
              ' miejsce na kod procedury
              Error 91 ' przykładowy błąd
          finally:
              ' miejsce na kod z końcowym czyszczeniem
              Exit Sub
          catch:
              Print Erl, Err, Error$
              Resume finally
          End Sub ' Error_Handling

Użyj Resume Next na przykład podczas zgłaszania napotkanych anomalii w procesie iteracyjnym, którego nie wolno przerywać. W takim przypadku może być wymagane wiele procedur obsługi.

          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

Użycie Resume bez parametrów do ponownego wykonania błędnej instrukcji może pasować do pewnych sytuacji. Jednak może to spowodować niekończącą się pętlę.