Съдържание

# Оператор Resume

Нулира информацията за грешка и указва какво да се изпълни по-нататък.

### Синтаксис:

         Resume [ [0] | label | Next ]

### Параметри:

0 нулира информацията за грешка и изпълнява наново инструкцията, предизвикала грешката. Аргументът 0 не е задължителен.

label: нулира информацията за грешка и продължава изпълнението от зададения етикет в текущата подпрограма.

Next: нулира информацията за грешка и изпълнява инструкцията след тази, която е предизвикала грешката.

Информацията за грешката се изгражда с функциите Erl, Err и Error$.

- Erl: номер на реда в модула, на който възниква грешката.

- Err: номер на грешката.

- Error[$]: описание на грешката.

Нулирането на информацията за грешка с Resume предотвратява разпространението на обработеното условие към извикващите подпрограми.

### Кодове за грешка:

20 Продължаване без грешка

## Примери:

Типичните действия при обработка на грешки са: уведомяване на потребителя, поправяне на грешката, записване на информация за грешката в регистрационен файл, генериране на потребителски грешки, предоставящи обяснения с упътване за разрешаване на проблема. Когато са необходими подобни механизми, използвайте Resume етикет.

          Sub Error_Handling
          try: On Error GoTo catch
              ' място за кода на подпрограмата
              Error 91 ' примерна грешка
          finally:
              ' място за почистващия код
              Exit Sub
          catch:
              Print Erl, Err, Error$
              Resume finally
          End Sub ' Error_Handling

Resume Next може да се използва например за докладване на аномалии в итеративен процес, който не трябва да се прекъсва. В такъв случай може да са необходими няколко подпрограми за обработка.

          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

В някои случаи може да е уместно използването на Resume без параметри за повторно изпълнение на проблемната инструкция. Това обаче може да предизвика безкраен цикъл.