Αντικείμενο Err [VBA]

Χρησιμοποιήστε το αντικείμενο VBA Err για πρόκληση ή χειρισμό σφαλμάτων χρόνου εκτέλεσης.

Το Err είναι ενσωματωμένο καθολικό αντικείμενο VBA που επιτρέπει:

warning

Αυτή η σταθερά, συνάρτηση ή αντικείμενο ενεργοποιείται με την πρόταση Option VBASupport 1 τοποθετημένη πριν τον κώδικα του εκτελέσιμου προγράμματος σε άρθρωμα.


Το αντικείμενο VBA Err έχει τις παρακάτω ιδιότητες και μεθόδους:

Ιδιότητες


         Err.Description As String
      

Η ιδιότητα Description (περιγραφή) δίνει τη φύση του σφάλματος. Δίνει λεπτομέρειες για τις διάφορες αιτίες που μπορούν να προκαλέσουν το σφάλμα. Ιδανικά, παρέχει την πολλαπλή διαδικασία ενεργειών για να βοηθήσει στην επίλυση του προβλήματος και να αποτρέψει την επανεμφάνισή του. Το ψευδώνυμό του είναι η συνάρτηση Basic Error για τα προκαθορισμένα σφάλματα του LibreOffice.


         Err.Number As Long
      

Αυτός είναι ο κωδικός σφάλματος που σχετίζεται με το σφάλμα. Η προεπιλεγμένη ιδιότητα του αντικειμένου Err είναι Number (Αριθμός). Το ψευδώνυμό του είναι η συνάρτηση Err της Basic του LibreOffice.


         Err.Source As String
      

Source (προέλευση) δείχνει το όνομα της ρουτίνας που παράγει το σφάλμα. Source είναι μια επιλογή για σφάλματα χρήστη.

Μέθοδοι


         Err.Clear()
      

Επαναφέρει την περιγραφή, Erl, αριθμό και ιδιότητες προέλευσης του τρέχοντος σφάλματος. Η παραλλαγή της για Basic του LibreOffice είναι η πρόταση Resume.


         Err.Raise(Number As Long, Optional source As String, Optional description As String)
      

Εμφανίζει σφάλματα ορισμένα από τον χρήστη ή προκαθορισμένα σφάλματα. Η παραλλαγή της για τη Basic του LibreOffice είναι η πρόταση Error.

Παράμετροι

Αριθμός Κωδικός σφάλματος ορισμένου από τον χρήστη ή προκαθορισμένο προς εμφάνιση.

note

Η περιοχή κωδικών σφαλμάτων 0-2000 έχει κρατηθεί για το LibreOffice Basic. Τα σφάλματα του χρήστη μπορεί να ξεκινούν από υψηλότερες τιμές για να αποτρέψουν σύγκρουση με τις μελλοντικές αναπτύξεις του LibreOffice Basic.


Προέλευση Το όνομα της ρουτίνας που προκαλεί το σφάλμα. Συνιστάται όνομα της μορφής "myLibrary.myModule.myProc".

Περιγραφή Περιγραφή του προβλήματος που οδηγεί σε σταμάτημα της διεργασίας εκτέλεσης, συνοδευόμενη με διάφορες αιτίες που μπορεί να το προκαλούν. Συνιστάται λεπτομερής κατάλογος της πιθανής διαδρομής των ενεργειών που μπορεί να βοηθήσουν στην επίλυση του προβλήματος.

Παράδειγμα:


         Option VBASupport 1
          
         Sub ThrowErrors
             Dim aDesc As String : aDesc = Space(80)
             On Local Error GoTo AlertAndExecNext
             Err.Raise(91, "ThrowErrors", Error(91))
             Err.Raise 2020, Description:="Αυτό είναι  σκόπιμο σφάλμα του χρήστη…"
             Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
             Exit Sub
         AlertAndExecNext:
             errTitle = "Error "& Err &" at line "& Erl &" in "& Err.Source
             MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
             Resume Next
         End Sub
      

Εξαίρεση ClassModule

tip

Σύντομο ClassModule, που περιβάλλει αντικείμενο Err του VBA, μπορεί να κατανείμει ιδιότητες και μεθόδους Err για τυπικά αρθρώματα Basic του LibreOffice.



         Option ClassModule
         Option VBASupport 1
          
         Public Property Get Description As String
             Description = Err.Description
         End Property
         Public Property Get Number As Long
             Number = Err.Number
         End Property
         Public Property Get Source As String
             Source = Err.Source
         End Property
         Public Sub Clear
             Err.Clear
         End Sub
         Public Sub Raise( number As Long, Optional Source As String, Optional Description As String)
             Err.Raise number, Source, Description
         End Sub
      

Παράδειγμα


         Function Exc As Object
             Exc = New Exception
         End Function
          
         Sub aRoutine
         try:
             On Local Error GoTo catch:
             Exc.Raise(4096, "myLib.myModule.aRoutine", _
                 "Οποιαδήποτε περιγραφή πολλών γραμμών για αυτήν την εξαίρεση του χρήστη")
             ' ο κώδικάς σας πηγαίνει εδώ …
         finally:
             Exit Sub
         catch:
             errTitle = "Error "& Exc.Number &" at line "& Erl &" in "& Exc.Source
             MsgBox Exc.Description, MB_ICONSTOP, errTitle
             Resume finally
         End Sub
      
note

Η πρόταση Error ή άρθρωμα κλάσης παρόμοιο με εξαίρεση μπορεί να χρησιμοποιηθεί εναλλακτικά, ενώ το δεύτερο προσθέτει περισσότερα γνωρίσματα.