Χειρισμός εξαιρέσεων στο VB.Net (Δοκιμάστε το Catch)

⚡ Έξυπνη Σύνοψη

Ο χειρισμός εξαιρέσεων στο VB.Net διαχειρίζεται σφάλματα χρόνου εκτέλεσης, όπως η διαίρεση με το μηδέν, χρησιμοποιώντας τις λέξεις-κλειδιά Try, Catch, Finally και Throw, ώστε ένα πρόγραμμα να μπορεί να ανταποκρίνεται στα προβλήματα ομαλά αντί να παρουσιάζει σφάλματα κατά την εκτέλεση.

  • 🔍 εξαίρεση: Ένα πρόβλημα που προκύπτει κατά την εκτέλεση, για παράδειγμα η διαίρεση ενός αριθμού με το μηδέν.
  • Προσπάθησε και πιάσε: Η εντολή Try αναδιπλώνει τον επικίνδυνο κώδικα. Η εντολή Catch χειρίζεται την εξαίρεση που προκαλεί.
  • Τελικά: Το μπλοκ Finally εκτελείται ανεξάρτητα από το αν προκύψει κάποια εξαίρεση.
  • 🚦 Βολή: Η συνάρτηση Throw εγείρει ένα αντικείμενο εξαίρεσης που προέρχεται από την κλάση System.Exception.
  • 🧩 Προσαρμοσμένες εξαιρέσεις: Κληρονομήστε το ApplicationException για να ορίσετε τους δικούς σας τύπους εξαιρέσεων.
  • 🤖 Βοήθεια με την Τεχνητή Νοημοσύνη: Συγπιλότος GitHub και IntelliCode δημιουργήστε μπλοκ Try Catch καθώς πληκτρολογείτε.

Χειρισμός εξαιρέσεων στο VB.Net

Τι είναι η εξαίρεση στο VB.Net;

An Εξαίρεση στο VB.Net αναφέρεται σε ένα πρόβλημα που προκύπτει κατά την εκτέλεση του προγράμματος. Προέρχεται από μια απροσδόκητη συγκυρία. Ένα καλό παράδειγμα είναι όταν εκτελείτε μια λειτουργία διαίρεσης και μετά διαιρείτε με το μηδέν (0). Θα γίνει εξαίρεση.

Τι είναι ο χειρισμός εξαιρέσεων στο VB.Net;

Με Εξαιρέσεις σε VB.Net, μπορείτε να μεταφέρετε τον έλεγχο ενός προγράμματος από το ένα μέρος στο άλλο. Στο VB.Net, οι εξαιρέσεις αντιμετωπίζονται χρησιμοποιώντας τις ακόλουθες 4 λέξεις-κλειδιά:

Λέξη-κλειδί Λεπτομέρεια
Δοκιμάστε Η δουλειά του μπλοκ Try είναι να προσδιορίσει το μπλοκ κώδικα για το οποίο θα ενεργοποιηθεί μια συγκεκριμένη εξαίρεση. Θα πρέπει να ακολουθείται από ένα(α) μπλοκ αλίευσης.
πάλη Η σύλληψη της Εξαίρεσης γίνεται σε αυτό το μπλοκ. Είναι ένας χειριστής εξαιρέσεων στον οποίο γίνεται ο χειρισμός της Εξαίρεσης.
Τελικά Χρησιμοποιήστε το μπλοκ Τέλος για να εκτελέσετε ένα σύνολο εντολών είτε έχει συμβεί εξαίρεση είτε όχι.
Βολή Μια εξαίρεση γίνεται μετά την εμφάνιση ενός προβλήματος. Αυτό είναι το έργο της λέξης κλειδιού Throw.

Έχοντας σαφείς τους ρόλους αυτών των τεσσάρων λέξεων-κλειδιών, σκεφτείτε πώς συνδυάζονται σε μία μόνο πρόταση.

Σύνταξη του Try Catch στο VB.Net

Οι δηλώσεις Try Catch στο VB.Net ορίζονται χρησιμοποιώντας την παρακάτω σύνταξη:

Try
   [ try_Statement(s) ]
   [ Exit Try ]
[ Catch [ exception_name [ As type ] ] [ When expression ]
   [ catch_Statement(s) ]
   [ Exit Try ] ]
[ Catch ... ]
[ Finally
   [ finally_Statement(s) ] ]
End Try

Το μπλοκ Try/Catch θα πρέπει να περιβάλλει τον κώδικα που μπορεί να δημιουργήσει μια εξαίρεση. Αυτός ο κωδικός είναι γνωστός ως προστατευμένος κωδικός. Μπορείτε να χρησιμοποιήσετε πολλαπλές εντολές catch όταν χρειάζεται να συλλάβετε διάφορους τύπους εξαιρέσεων.

Παράδειγμα χειρισμού εξαιρέσεων στο VB.Net με το Try Catch και Τέλος

Με τις εντολές Try/Catch, μπορείτε να διαχωρίσετε τον συνηθισμένο κώδικα προγράμματος από το σύστημα χειρισμού σφαλμάτων. Ας δείξουμε πώς να χειριστείτε μια εξαίρεση χρησιμοποιώντας τις λέξεις-κλειδιά Try, Catch και Finally.

Βήμα 1) Δημιουργήστε μια νέα εφαρμογή κονσόλας.

Βήμα 2) Χρησιμοποιήστε αυτόν τον κωδικό:

Module Module1
    Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)
        Dim answer As Integer
        Try
            answer = n1 \ n2
        Catch ex As DivideByZeroException
            Console.WriteLine("Exception: {0}", ex)
        Finally
            Console.WriteLine("Answer is: {0}", answer)
        End Try
    End Sub
    Sub Main()
        divisionFunction(4, 0)
        Console.ReadKey()
    End Sub

End Module

Βήμα 3) Κάντε κλικ στο κουμπί Έναρξη από τη γραμμή εργαλείων για να εκτελέσετε τον κώδικα. Θα πρέπει να λάβετε την ακόλουθη έξοδο:

VB.Net Try Catch Τελικά, η έξοδος της κονσόλας δείχνει την εξαίρεση DivideByZero που έχει παγιδευτεί

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

VB.Net Δοκιμάστε το Catch Τέλος, εμφανίζεται ένα παράδειγμα κώδικα στο Visual Studio

Επεξήγηση του Code:

  1. Δημιουργία μιας ενότητας με το όνομα Module1.
  2. Δημιουργία μιας υποδιαδικασίας με το όνομα divisionFunction με δύο ακέραια ορίσματα n1 και n2. Το ByVal είναι μια λέξη-κλειδί VB.Net που δηλώνει ότι οι τιμές των ορισμάτων θα μεταβιβαστούν ανά τιμή.
  3. Δημιουργία μιας ακέραιας μεταβλητής με όνομα απάντηση.
  4. Έναρξη του μπλοκ Try/Catch. Πρέπει να περιβάλουμε τον κώδικα που υποπτευόμαστε ότι μπορεί να δημιουργήσει εξαίρεση με αυτό το μπλοκ.
  5. Εκτέλεση πράξης διαίρεσης μεταξύ των τιμών των μεταβλητών n1 και n2. Το αποτέλεσμα της πράξης διαίρεσης εκχωρείται στη μεταβλητή απάντηση. Αυτός ο κώδικας μπορεί να δημιουργήσει μια εξαίρεση, για παράδειγμα, όταν διαιρούμε έναν αριθμό με το μηδέν, επομένως τον έχουμε περιβάλει με τα μπλοκ Try/Catch.
  6. Πιέστε την Εξαίρεση με το όνομα DivideByZeroException και εκχωρώντας το μήνυμα εξαίρεσης που δημιουργήθηκε στο ex.
  7. Εκτύπωση κειμένου στην κονσόλα για να ειδοποιηθεί ο χρήστης για τον τύπο/όνομα της Εξαίρεσης που τέθηκε.
  8. Το μπλοκ Τέλος. Αυτό θα εκτελεστεί είτε συλληφθεί μια εξαίρεση είτε όχι.
  9. Εκτύπωση κειμένου στην κονσόλα που δείχνει το αποτέλεσμα της λειτουργίας διαίρεσης.
  10. Τέλος του μπλοκ Try, δηλαδή τέλος του κώδικα διαχείρισης σφαλμάτων.
  11. Τέλος της υποδιαδικασίας διαίρεσηΣυνάρτηση.
  12. Έναρξη της κύριας υποδιαδικασίας.
  13. Κλήση/επίκληση της υποδιαδικασίας διαίρεσηΣυνάρτηση. Οι τιμές των δύο ακέραιων ορισμάτων μεταβιβάζονται εδώ. Η τιμή του n1=4 και n2=0. Αυτό σημαίνει ότι η λειτουργία διαίρεσης θα είναι 4\0, δηλαδή n1\n2.
  14. Παύση του παραθύρου της κονσόλας σε αναμονή για τον χρήστη να προβεί σε ενέργειες για να το κλείσει.
  15. Λήξη της κύριας υποδιαδικασίας.
  16. Τέλος της ενότητας.

Εξαιρέσεις που καθορίζονται από το χρήστη στο VB.Net

Το VB.Net σάς επιτρέπει να ορίσετε τις δικές σας εξαιρέσεις. Μπορείτε να λάβετε κλάσεις εξαιρέσεων που ορίζονται από τον χρήστη από την κλάση ApplicationException. Ας το δείξουμε αυτό με ένα παράδειγμα:

Παράδειγμα εξαίρεσης που καθορίζεται από το χρήστη στο VB.Net

Ακολουθεί ένα παράδειγμα εξαίρεσης που ορίζεται από τον χρήστη στο VB.Net:

Βήμα 1) Δημιουργήστε μια νέα εφαρμογή κονσόλας.

Βήμα 2) Χρησιμοποιήστε τον ακόλουθο κωδικό:

Module Module1

    Public Class HeightIsZeroException : Inherits ApplicationException
        Public Sub New(ByVal text As String)
            MyBase.New(text)
        End Sub
    End Class
    Public Class Height
        Dim height As Integer = 0
        Sub showHeight()
            If (height = 0) Then
                Throw (New HeightIsZeroException("Zero Height found"))
            Else
                Console.WriteLine("Height is: {0}", height)
            End If
        End Sub
    End Class
    Sub Main()
        Dim hght As Height = New Height()
        Try
            hght.showHeight()
        Catch ex As HeightIsZeroException
            Console.WriteLine("HeightIsZeroException: {0}", ex.Message)
        End Try
        Console.ReadKey()
    End Sub

End Module

Βήμα 3) Κάντε κλικ στο κουμπί Έναρξη από την επάνω γραμμή για να εκτελέσετε τον κώδικα. Θα πρέπει να λάβετε την ακόλουθη έξοδο:

Μήνυμα HeightIsZeroException που ορίζεται από τον χρήστη του VB.Net και εκτυπώνεται στην κονσόλα

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

Παράδειγμα κώδικα κλάσης εξαίρεσης που ορίζεται από τον χρήστη VB.Net στο Visual Studio

Επεξήγηση του Code:

  1. Δημιουργία μιας ενότητας με το όνομα Module1.
  2. Δημιουργία μιας κλάσης εξαίρεσης με το όνομα HeightIsZeroException. Η κλάση κληρονομεί όλη την κλάση ApplicationException.
  3. Δημιουργία μιας υποδιαδικασίας με το όνομα New. Θα χρειαστεί ένα όρισμα συμβολοσειράς με όνομα κείμενο.
  4. Καλώντας τον κατασκευαστή της βασικής κλάσης και μεταβιβάζοντάς του το παραπάνω όρισμα.
  5. Λήξη της Νέας υποδιαδικασίας.
  6. Τέλος της τάξης HeightIsZeroException.
  7. Δημιουργία τάξης με το όνομα Height. Ο τροποποιητής δημόσιας πρόσβασής του είναι Public, που σημαίνει ότι θα είναι δημόσια προσβάσιμος.
  8. Δημιουργία μιας ακέραιας μεταβλητής με το όνομα Height και αρχικοποίηση της τιμής της σε 0.
  9. Δημιουργία μιας υποδιαδικασίας με το όνομα showHeight().
  10. Έλεγχος για το πότε η τιμή της μεταβλητής Height είναι 0. Χρησιμοποιήσαμε τη συνθήκη Αν… Τότε.
  11. Για να πετάξετε το HeightIsZeroException εάν ισχύει η παραπάνω συνθήκη. Το μήνυμα Μηδενικό Ύψος Βρέθηκε θα εμφανιστεί όταν τεθεί αυτή η Εξαίρεση.
  12. Το τμήμα Else πρέπει να εκτελεστεί όταν η συνθήκη If δεν είναι αληθής.
  13. Μήνυμα για εκτύπωση στην κονσόλα που δείχνει το Ύψος όταν δεν είναι 0.
  14. Τέλος της συνθήκης If.
  15. Τέλος της υποδιαδικασίας showHeight().
  16. Τέλος τάξης Ύψος.
  17. Έναρξη της κύριας υποδιαδικασίας.
  18. Δημιουργία αντικειμένου με το όνομα Height ως παρουσία της κλάσης Height.
  19. Έναρξη του μπλοκ χειρισμού εξαιρέσεων.
  20. Κλήση της υποδιαδικασίας showHeight() που ορίζεται στην κλάση Height. Χρησιμοποιήσαμε ένα αντικείμενο αυτής της κλάσης για πρόσβαση σε αυτήν τη μέθοδο. Αυτή η γραμμή μπορεί να οδηγήσει σε εξαίρεση. Επομένως, την έχουμε περιβάλει με έναν κώδικα χειρισμού εξαιρέσεων.
  21. Λήψη της εξαίρεσης HeightIsZeroException ως αντικείμενο ex σε περίπτωση που παρουσιαστεί.
  22. Το μήνυμα για εκτύπωση στην κονσόλα όταν πιαστεί το HeightIsZeroException.
  23. Τέλος του μπλοκ χειρισμού εξαιρέσεων.
  24. Παύση του παραθύρου της κονσόλας περιμένοντας ένας χρήστης να προβεί σε ενέργειες για να το κλείσει.
  25. Λήξη της κύριας υποδιαδικασίας.
  26. Τέλος της ενότητας.

Πετάξτε την εξαίρεση στο VB.Net

Στον χειρισμό εξαιρέσεων, μπορείτε να επιλέξετε να ρίξετε ένα αντικείμενο. Ωστόσο, το αντικείμενο πρέπει να προέρχεται από την κλάση System.Exception, άμεσα ή έμμεσα. Για παράδειγμα:

Παράδειγμα εξαίρεσης ρίψης στο VB.Net

Παρακάτω είναι ένα παράδειγμα εξαίρεσης throw στο VB.Net:

Βήμα 1) Δημιουργήστε μια νέα εφαρμογή κονσόλας.

Βήμα 2) Χρησιμοποιήστε τον ακόλουθο κωδικό:

Module Module1

    Sub Main()
        Try
            Throw New ApplicationException("Throwing a custom exception")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("The Finally Block")
        End Try
        Console.ReadKey()
    End Sub


End Module

Βήμα 3) Κάντε κλικ στο κουμπί Έναρξη από την επάνω γραμμή για να εκτελέσετε τον κώδικα. Θα πρέπει να λάβετε τα εξής:

Η έξοδος της κονσόλας δήλωσης VB.Net Throw εμφανίζει το μήνυμα προσαρμοσμένης εξαίρεσης

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

Παράδειγμα κώδικα εξαίρεσης VB.Net Throw με το Try Catch Finally

Επεξήγηση του Code:

  1. Δημιουργία μιας ενότητας με το όνομα Module1.
  2. Έναρξη της κύριας υποδιαδικασίας.
  3. Έναρξη του κωδικού χειρισμού σφαλμάτων.
  4. Ρίχνοντας ένα αντικείμενο εξαίρεσης. Αυτός ο κώδικας μπορεί να δημιουργήσει μια εξαίρεση, επομένως τον έχουμε περιβάλει με ένα μπλοκ Try/Catch.
  5. Η σύλληψη μιας εξαίρεσης ως αντικείμενο ex, εάν η γραμμή εισάγει μια εξαίρεση.
  6. Εκτύπωση του μηνύματος εξαίρεσης στην κονσόλα σε περίπτωση που παρουσιαστεί.
  7. Το μπλοκ Τέλος για να εκτελεστεί είτε συλληφθεί μια εξαίρεση είτε όχι.
  8. Το μήνυμα που θα εκτυπωθεί στην κονσόλα όταν εκτελεστεί το μπλοκ Τέλος.
  9. Τέλος του κώδικα χειρισμού εξαιρέσεων.
  10. Παύση της κονσόλας για λίγο, περιμένοντας κάποιος χρήστης να κάνει κάποια ενέργεια για να την κλείσει.
  11. Λήξη της κύριας υποδιαδικασίας.
  12. Τέλος της ενότητας.

Συχνές Ερωτήσεις

Ναι. Μια πρόταση Try είναι έγκυρη χωρίς Catch, εφόσον περιλαμβάνει ένα μπλοκ Finally. Αυτή η φόρμα Try Finally εκτελεί κώδικα καθαρισμού, αλλά δεν χειρίζεται την ίδια την εξαίρεση.

Ναι. Παραθέστε πολλά μπλοκ Catch για να χειριστείτε διαφορετικούς τύπους εξαιρέσεων. Ταξινομήστε τα από την πιο συγκεκριμένη στην λιγότερο συγκεκριμένη, επειδή το VB.Net τα ελέγχει διαδοχικά και χρησιμοποιεί την πρώτη αντιστοίχιση.

Σχεδόν πάντα. Εκτελείται είτε εντοπίζεται μια εξαίρεση είτε όχι, ακόμα και μετά από μια εντολή Return. Παραλείπεται μόνο σε μια πρόταση End ή σε μια StackOverflowException.

Η εντολή Throw επαναφέρει την τρέχουσα εξαίρεση και διατηρεί την αρχική της στοίβα tracε. Το Throw ex επαναφέρει τη στοίβα trace στην τρέχουσα γραμμή, αποκρύπτοντας το σημείο από το οποίο πραγματικά ξεκίνησε το σφάλμα. Προτιμήστε απλή εντολή Throw.

Ένα συντακτικό σφάλμα εντοπίζεται από τον μεταγλωττιστή πριν από την εκτέλεση του προγράμματος. Μια εξαίρεση παρουσιάζεται κατά τον χρόνο εκτέλεσης, κατά την εκτέλεση, και μπορεί να αντιμετωπιστεί με ένα μπλοκ Try Catch.

Συχνές είναι οι DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException και OverflowException. Όλες κληρονομούνται από το System.Exception και μπορούν να εντοπιστούν ξεχωριστά.

Ναί. GitHub Copilot Μετατρέπει ένα σχόλιο σε απλό αγγλικό κείμενο σε ένα πλήρες μπλοκ Try Catch Finally και προτείνει τον σωστό τύπο εξαίρεσης. Να ελέγχετε πάντα τον δημιουργημένο χειριστή.

Ναι. Visual Studio ΊντελιCode προσφέρει ολοκληρωμένες λύσεις που λαμβάνουν υπόψη τα συμφραζόμενα και καλύπτουν ολόκληρο το φάσμα των όρων Catch και των τύπων εξαιρέσεων, οι οποίες έχουν αντληθεί από χιλιάδες έργα ανοιχτού κώδικα.

Συνοψίστε αυτήν την ανάρτηση με: