Περιεχόμενα

# Πρόταση Resume

Επαναφέρει τις πληροφορίες σφάλματος και δείχνει τι θα εκτελεστεί μετά.

### Σύνταξη:

         Resume [ [0] | label | Next ]

### Παράμετροι:

0: Επαναφέρει τις πληροφορίες σφάλματος και επανεκτελεί την οδηγία που προκάλεσε το σφάλμα. Το 0 είναι προαιρετικό.

label: Επαναφέρει τις πληροφορίες σφάλματος και συνεχίζει στη συγκεκριμένη ετικέτα της τρέχουσας υπορουτίνας.

Next: Επαναφέρει τις πληροφορίες σφάλματος και εκτελεί την οδηγία ακολουθώντας αυτήν που προκάλεσε το σφάλμα.

Οι πληροφορίες σφάλματος είναι δομημένες με τις συναρτήσεις Erl, Err και Error$.

- Erl: Αριθμός γραμμής αρθρώματος όπου εμφανίζει το σφάλμα.

- Err: Αριθμός σφάλματος.

- Error[$]: Περιγραφή σφάλματος.

Η χρήση της Συνέχισης για επαναφορά πληροφοριών σφάλματος αποτρέπει τη διάδοση της εξεταζόμενης κατάστασης στις καλούσες ρουτίνες.

### Κωδικοί σφάλματος:

20 Επαναφορά χωρίς λάθος

## Παραδείγματα:

Οι τυπικές ρουτίνες χειρισμού σφάλματος είναι: προειδοποίηση του χρήστη, διόρθωση του σφάλματος, καταγραφή πληροφοριών σφάλματος ή επαναποστολή προσαρμοσμένων σφαλμάτων που δίνουν εξηγήσεις με οδηγίες επίλυσης. Χρησιμοποιήστε 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 χωρίς παραμέτρους για επανεκτέλεση της εσφαλμένης οδηγίας μπορεί να ταιριάζει σε συγκεκριμένες καταστάσεις. Όμως, αυτό μπορεί να προκαλεί έναν ατέρμονα βρόχο.