Δοκιμάστε ... Catch ... Τέλος, Throws, Εξαίρεση από τον χρήστη στο VB.Net

Τι είναι μια εξαίρεση;

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

Σε αυτό το μάθημα της Visual Basic, θα μάθετε:

  • Τι είναι μια εξαίρεση;
  • Τι είναι ο χειρισμός εξαιρέσεων;
  • Σύνταξη του Try / Catch
  • Παράδειγμα χειρισμού εξαιρέσεων
  • Εξαιρέσεις που καθορίζονται από τον χρήστη
  • Πετώντας αντικείμενα

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

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

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

Σύνταξη του Try / Catch

Οι δηλώσεις Try / Catch λαμβάνουν τη σύνταξη που δίνεται παρακάτω:

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

Παράδειγμα χειρισμού εξαιρέσεων

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

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

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

Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module

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

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

Επεξήγηση του κώδικα:

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

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

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

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

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

Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module

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

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

Επεξήγηση του κώδικα:

  1. Δημιουργία μονάδας με το όνομα Module1.
  2. Δημιουργία κλάσης εξαίρεσης με το όνομα HeightIsZeroException. Η κλάση κληρονομεί όλη την κλάση ApplicationException.
  3. Δημιουργία μιας υπο-διαδικασίας με το όνομα Νέο. Θα πάρει ένα όρισμα συμβολοσειράς που ονομάζεται κείμενο.
  4. Κλήση του κατασκευαστή βασικής κλάσης και μετάβαση σε αυτό το παραπάνω όρισμα.
  5. Λήξη της νέας υπο-διαδικασίας.
  6. Τέλος της τάξης HeightIsZeroException.
  7. Δημιουργία τάξης με το όνομα Height. Ο τροποποιητής δημόσιας πρόσβασης είναι δημόσιος, που σημαίνει ότι θα είναι προσβάσιμος στο κοινό.
  8. Δημιουργία ακέραιας μεταβλητής με το όνομα Height και αρχικοποίηση της τιμής σε 0.
  9. Δημιουργία μιας υπο-διαδικασίας με το όνομα showHeight ().
  10. Έλεγχος για πότε η τιμή της μεταβλητής Height είναι 0. Έχουμε χρησιμοποιήσει την συνθήκη If… Then.
  11. Για να ρίξετε το HeightIsZeroException εάν ισχύει η παραπάνω συνθήκη. Το μήνυμα Zero Height Found θα εμφανιστεί όταν αυτή η Εξαίρεση ρίξει.
  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. Τέλος της ενότητας.

Πετώντας αντικείμενα

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

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

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

Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module

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

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

Επεξήγηση του κώδικα:

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

Περίληψη

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

ενδιαφέροντα άρθρα...