Resets error information and indicates what to execute next.Resume Statement diagramResume [ [0] | label | Next ]0: Resets error information and re-executes the instruction that caused the error. 0 is optional.label: : Resets error information and resumes execution at the specified label of the current subroutine.Next: Resets error information and executes the instruction following the one that caused the error.Error information is built with Erl, Err and Error$ functions.Erl: Module line number where error occurs.Err: Error number.Error[$]: Error description.Using Resume to reset error information prevents the propagation of the handled condition to calling routines.
Examples:
Typical error handling routines are: alerting the user, fixing the error, logging error information or re-throwing custom errors that provide explanations with resolution instructions. Use Resume label when requiring such mechanisms.Sub Error_Handlingtry: On Error GoTo catch ' routine code goes here Error 91 ' example errorfinally: ' routine cleanup code goes here Exit Subcatch: Print Erl, Err, Error$ Resume finallyEnd Sub ' Error_HandlingUse 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 catchingfinally: Exit SubReportAndProcessNext: Print "Error "& Err &" at line "& Erl &" - "& Error$ Resume NextEnd Sub ' IterationUsing Resume without parameters to re-execute the faulty instruction can fit certain situations. However that may cause a neverending loop.