Помощ за Collabora Office 24.04
Нулира информацията за грешка и указва какво да се изпълни по-нататък.
Resume [ [0] | label | Next ]
0 нулира информацията за грешка и изпълнява наново инструкцията, предизвикала грешката. Аргументът 0 не е задължителен.
label: нулира информацията за грешка и продължава изпълнението от зададения етикет в текущата подпрограма.
Next: нулира информацията за грешка и изпълнява инструкцията след тази, която е предизвикала грешката.
Информацията за грешката се изгражда с функциите Erl, Err и Error$.
Erl: номер на реда в модула, на който възниква грешката.
Err: номер на грешката.
Error[$]: описание на грешката.
Нулирането на информацията за грешка с Resume предотвратява разпространението на обработеното условие към извикващите подпрограми.
Типичните действия при обработка на грешки са: уведомяване на потребителя, поправяне на грешката, записване на информация за грешката в регистрационен файл, генериране на потребителски грешки, предоставящи обяснения с упътване за разрешаване на проблема. Когато са необходими подобни механизми, използвайте 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 без параметри за повторно изпълнение на проблемната инструкция. Това обаче може да предизвика безкраен цикъл.