Πρόταση Resume
Επαναφέρει τις πληροφορίες σφάλματος και δείχνει τι θα εκτελεστεί μετά.
Resume [ [0] | label | Next ]
0: Επαναφέρει τις πληροφορίες σφάλματος και επανεκτελεί την οδηγία που προκάλεσε το σφάλμα. Το 0 είναι προαιρετικό.
ετικέτα:: Επαναφέρει τις πληροφορίες σφάλματος και συνεχίζει την εκτέλεση στην καθορισμένη ετικέτα της τρέχουσας υπορουτίνας.
Next: Επαναφέρει τις πληροφορίες σφάλματος και εκτελεί την οδηγία ακολουθώντας αυτήν που προκάλεσε το σφάλμα.
Οι πληροφορίες σφάλματος είναι δομημένες με τις συναρτήσεις Erl, Err και Error$.
Erl: Αριθμός γραμμής αρθρώματος όπου εμφανίζει το σφάλμα.
Err: Αριθμός σφάλματος.
Error[$]: Περιγραφή σφάλματος.
Η χρήση της Συνέχισης για επαναφορά πληροφοριών σφάλματος αποτρέπει τη διάδοση της εξεταζόμενης κατάστασης στις καλούσες ρουτίνες.
Παραδείγματα:
Οι τυπικές ρουτίνες χειρισμού σφάλματος είναι: προειδοποίηση του χρήστη, διόρθωση του σφάλματος, καταγραφή πληροφοριών σφάλματος ή επαναποστολή προσαρμοσμένων σφαλμάτων που δίνουν εξηγήσεις με οδηγίες επίλυσης. Χρησιμοποιήστε Resume label κατά τη χρήση τέτοιων μηχανισμών.
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 χωρίς παραμέτρους για επανεκτέλεση εσφαλμένης οδηγίας μπορεί να ταιριάξει σε συγκεκριμένες καταστάσεις. Όμως, αυτή μπορεί να προκαλέσει έναν βρόχο χωρίς τέλος.