Χειρισμός εξαιρέσεων στο 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, μπορείτε να διαχωρίσετε τον συνηθισμένο κώδικα του προγράμματος από το Σύστημα διαχείρισης σφαλμάτων. Ας δείξουμε πώς μπορείτε να χειριστείτε μια εξαίρεση χρησιμοποιώντας τις λέξεις-κλειδιά "Δοκιμή", "Αλίευση" και "Τέλος".
Βήμα 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) Κάντε κλικ στο κουμπί Έναρξη από τη γραμμή εργαλείων για να εκτελέσετε τον κώδικα. Θα πρέπει να λάβετε την ακόλουθη έξοδο:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση Κώδικα:
- Δημιουργία μιας ενότητας με το όνομα Module1.
- Δημιουργία μιας υποδιαδικασίας με το όνομα divisionFunction με δύο ακέραια ορίσματα n1 και n2. Το ByVal είναι μια λέξη-κλειδί VB.Net που δηλώνει ότι οι τιμές των ορισμάτων θα μεταβιβαστούν ανά τιμή.
- Δημιουργία μιας ακέραιας μεταβλητής με όνομα απάντηση.
- Έναρξη του μπλοκ Try/Catch. Πρέπει να περιβάλουμε τον κώδικα που υποπτευόμαστε ότι μπορεί να δημιουργήσει εξαίρεση με αυτό το μπλοκ.
- Εκτέλεση πράξης διαίρεσης μεταξύ των τιμών των μεταβλητών n1 και n2. Το αποτέλεσμα της πράξης διαίρεσης εκχωρείται στη μεταβλητή απάντηση. Αυτός ο κώδικας μπορεί να δημιουργήσει μια εξαίρεση, για παράδειγμα, όταν διαιρούμε έναν αριθμό με το μηδέν, επομένως τον έχουμε περιβάλει με τα μπλοκ Try/Catch.
- Πιέστε την Εξαίρεση με το όνομα DivideByZeroException και εκχωρώντας το μήνυμα εξαίρεσης που δημιουργήθηκε στο ex.
- Εκτύπωση κειμένου στην κονσόλα για να ειδοποιηθεί ο χρήστης για τον τύπο/όνομα της Εξαίρεσης που τέθηκε.
- Το μπλοκ Τέλος. Αυτό θα εκτελεστεί είτε συλληφθεί μια εξαίρεση είτε όχι.
- Εκτύπωση κειμένου στην κονσόλα που δείχνει το αποτέλεσμα της λειτουργίας διαίρεσης.
- Τέλος του μπλοκ Try, δηλαδή τέλος του κώδικα διαχείρισης σφαλμάτων.
- Τέλος της υποδιαδικασίας διαίρεσηΣυνάρτηση.
- Έναρξη της κύριας υποδιαδικασίας.
- Κλήση/επίκληση της υποδιαδικασίας διαίρεσηΣυνάρτηση. Οι τιμές των δύο ακέραιων ορισμάτων μεταβιβάζονται εδώ. Η τιμή του n1=4 και n2=0. Αυτό σημαίνει ότι η λειτουργία διαίρεσης θα είναι 4\0, δηλαδή n1\n2.
- Παύση του παραθύρου της κονσόλας σε αναμονή για τον χρήστη να προβεί σε ενέργειες για να το κλείσει.
- Λήξη της κύριας υποδιαδικασίας.
- Τέλος της ενότητας.
Εξαιρέσεις που καθορίζονται από το χρήστη στο 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) Κάντε κλικ στο κουμπί Έναρξη από την επάνω γραμμή για να εκτελέσετε τον κώδικα. Θα πρέπει να λάβετε την ακόλουθη έξοδο:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση Κώδικα:
- Δημιουργία μιας ενότητας με το όνομα Module1.
- Δημιουργία μιας κλάσης εξαίρεσης με το όνομα HeightIsZeroException. Η κλάση κληρονομεί όλη την κλάση ApplicationException.
- Δημιουργία μιας υποδιαδικασίας με το όνομα New. Θα χρειαστεί ένα όρισμα συμβολοσειράς με όνομα κείμενο.
- Καλώντας τον κατασκευαστή της βασικής κλάσης και μεταβιβάζοντάς του το παραπάνω όρισμα.
- Λήξη της Νέας υποδιαδικασίας.
- Τέλος της τάξης HeightIsZeroException.
- Δημιουργία τάξης με το όνομα Height. Ο τροποποιητής δημόσιας πρόσβασής του είναι Public, που σημαίνει ότι θα είναι δημόσια προσβάσιμος.
- Δημιουργία μιας ακέραιας μεταβλητής με το όνομα Height και αρχικοποίηση της τιμής της σε 0.
- Δημιουργία μιας υποδιαδικασίας με το όνομα showHeight().
- Έλεγχος για το πότε η τιμή της μεταβλητής Height είναι 0. Χρησιμοποιήσαμε τη συνθήκη Αν… Τότε.
- Για να πετάξετε το HeightIsZeroException εάν ισχύει η παραπάνω συνθήκη. Το μήνυμα Μηδενικό Ύψος Βρέθηκε θα εμφανιστεί όταν τεθεί αυτή η Εξαίρεση.
- Το τμήμα Else πρέπει να εκτελεστεί όταν η συνθήκη If δεν είναι αληθής.
- Μήνυμα για εκτύπωση στην κονσόλα που δείχνει το Ύψος όταν δεν είναι 0.
- Τέλος της συνθήκης If.
- Τέλος της υποδιαδικασίας showHeight().
- Τέλος τάξης Ύψος.
- Έναρξη της κύριας υποδιαδικασίας.
- Δημιουργία αντικειμένου με το όνομα Height ως παρουσία της κλάσης Height.
- Έναρξη του μπλοκ χειρισμού εξαιρέσεων.
- Επίκληση της υποδιαδικασίας showHeight() που ορίζεται στην κλάση Height. Έχουμε χρησιμοποιήσει ένα αντικείμενο αυτής της κλάσης για πρόσβαση σε αυτήν τη μέθοδο. Αυτή η γραμμή μπορεί να οδηγήσει σε εξαίρεση. Ως εκ τούτου, το έχουμε περιβάλει με έναν κωδικό χειρισμού εξαιρέσεων.
- Λήψη της εξαίρεσης HeightIsZeroException ως αντικείμενο ex σε περίπτωση που παρουσιαστεί.
- Το μήνυμα για εκτύπωση στην κονσόλα όταν πιαστεί το HeightIsZeroException.
- Τέλος του μπλοκ χειρισμού εξαιρέσεων.
- Παύση του παραθύρου της κονσόλας περιμένοντας ένας χρήστης να προβεί σε ενέργειες για να το κλείσει.
- Λήξη της κύριας υποδιαδικασίας.
- Τέλος της ενότητας.
Πετάξτε την εξαίρεση στο VB.Net
Σε χειρισμό εξαίρεσης, μπορείτε να επιλέξετε να πετάξετε ένα αντικείμενο. Ωστόσο, το αντικείμενο πρέπει να προέρχεται από το System. Κατηγορία εξαίρεσης, άμεσα ή έμμεσα. Για παράδειγμα:
Παράδειγμα εξαίρεσης ρίψης στο VB.Net
Παρακάτω είναι ένα παράδειγμα εξαίρεσης ρίψης στο 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) Κάντε κλικ στο κουμπί Έναρξη από την επάνω γραμμή για να εκτελέσετε τον κώδικα. Θα πρέπει να λάβετε τα εξής:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση Κώδικα:
- Δημιουργία μιας ενότητας με το όνομα Module1.
- Έναρξη της κύριας υποδιαδικασίας.
- Έναρξη του κωδικού χειρισμού σφαλμάτων.
- Ρίχνοντας ένα αντικείμενο εξαίρεσης. Αυτός ο κώδικας μπορεί να δημιουργήσει μια εξαίρεση, επομένως τον έχουμε περιβάλει με ένα μπλοκ Try/Catch.
- Η σύλληψη μιας εξαίρεσης ως αντικείμενο ex, εάν η γραμμή εισάγει μια εξαίρεση.
- Εκτύπωση του μηνύματος εξαίρεσης στην κονσόλα σε περίπτωση που παρουσιαστεί.
- Το μπλοκ Τέλος για να εκτελεστεί είτε συλληφθεί μια εξαίρεση είτε όχι.
- Το μήνυμα που θα εκτυπωθεί στην κονσόλα όταν εκτελεστεί το μπλοκ Τέλος.
- Τέλος του κώδικα χειρισμού εξαιρέσεων.
- Παύση της κονσόλας για λίγο, περιμένοντας κάποιος χρήστης να κάνει κάποια ενέργεια για να την κλείσει.
- Λήξη της κύριας υποδιαδικασίας.
- Τέλος της ενότητας.
Σύνοψη
- Η εξαίρεση αναφέρεται σε ένα πρόβλημα που προκύπτει κατά την εκτέλεση του προγράμματος που προκαλείται από μια απροσδόκητη περίσταση.
- Εάν υποψιάζεστε ότι κάποιος κώδικας θα δημιουργήσει μια εξαίρεση, περιβάλετέ τον με ένα μπλοκ Try/Catch.
- Το μπλοκ Τέλος έρχεται μετά το μπλοκ Try/Catch και εκτελείται είτε συλλαμβάνεται μια εξαίρεση είτε όχι.
- Το VB.Net μας επιτρέπει να δημιουργήσουμε προσαρμοσμένες εξαιρέσεις.