Τρόπος χρήσης δομημένων εξαίρεση χειρισμό σε Visual Basic .NET ή Visual Basic 2005

Αναγν. άρθρου: 315965 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο περιγράφει τον τρόπο χρήσης δομημένων εξαίρεση χειρισμό σε Visual Basic .NET ή Visual Basic του 2005.

ΑΠΑΙΤΗΣΕΙΣ

Η ακόλουθη λίστα περιγράφει τα υλικού που συνιστώνται, λογισμικό, υποδομή δικτύου και τα service pack που χρειάζεστε:
  • Visual Basic .NET ή Visual Basic 2005
Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τα ακόλουθα θέματα:
  • Visual Basic .NET ή Visual Basic 2005
  • Microsoft Visual Studio .NET ή Microsoft Visual Studio 2005

Δομημένη χειρισμός εξαίρεσης

Visual Basic .NET ή Visual Basic 2005 προσφέρει χειρισμού εξαιρέσεων δομημένη που παρέχει μια εναλλακτική λύση ισχυρή, πιο ευανάγνωστη για το χειρισμό σφαλμάτων "On μετάβασης σφαλμάτων", που είναι διαθέσιμες σε προηγούμενες εκδόσεις της Microsoft Visual Basic. Χειρισμού εξαιρέσεων δομημένη είναι πιο ισχυρή επειδή σας επιτρέπει να ενθέσετε χειρισμού σφαλμάτων μέσα σε άλλα προγράμματα χειρισμού σφαλμάτων μέσα στην ίδια διαδικασία. Επιπλέον, χειρισμού εξαιρέσεων δομημένη χρησιμοποιεί ένα μπλοκ σύνταξη παρόμοια με τοΕάν... Else... τέλος εάνπρόταση. Με αυτόν τον τρόπο πιο ευανάγνωστη και πιο εύκολο να διατηρήσετε κώδικα της Visual Basic .NET και 2005 της Visual Basic.

ΣΗΜΕΙΩΣΗ: Visual Basic .NET ή Visual Basic 2005 διατηρεί τη σύνταξη "On μετάβασης σφάλμα" για συμβατότητα με παλαιότερες εκδόσεις. Μπορείτε να χρησιμοποιήσετε αυτήν τη σύνταξη κώδικα της Visual Basic .NET ή Visual Basic 2005. Ωστόσο, δεν είναι δυνατό να συνδυάσετε χειρισμού εξαιρέσεων δομημένες καιOn Errorδηλώσεις μέσα στην ίδια διαδικασία. Όταν γράφετε νέο κώδικα, η Microsoft συνιστά να χρησιμοποιείτε δομημένες χειρισμού εξαιρέσεων.

Η βασική σύνταξη του χειρισμού σφαλμάτων δομημένη είναι ως εξής:
Try
   'Code that may raise an error.
Catch
   'Code to handle the error.
Finally
   'Code to do any final clean up.
End Try
				
Για ναtryANDΤέλος TryΟι προτάσεις είναι απαραίτητη. Για ναCatchANDΤέλοςΟι προτάσεις δεν είναι απαραίτητα, παρόλο που θα πρέπει να συμπεριλάβετε τουλάχιστον ένα από αυτά στον κώδικά σας. Μπορείτε επίσης να καθορίσετε πολλαπλέςCatchΟι προτάσεις έτσι ότι κάθεCatchμπλοκ χειρίζεται ένα συγκεκριμένο σφάλμα.

Εντοπίζει μια εξαίρεση

  1. Ξεκινήστε το Visual Studio .NET ή Visual Studio 2005.
  2. Δημιουργήστε ένα νέο έργο εφαρμογής κονσόλας σε Visual Basic .NET ή Visual Basic του 2005.
  3. ΣτοΔευτερεύων κύριοςη διαδικασία, προσθέστε τον ακόλουθο κώδικα:
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try
    					
  4. Στο διακομιστήΟ εντοπισμός σφαλμάτωνμενού, κάντε κλικ στο κουμπίStartΓια να εκτελέσετε την εφαρμογή. Ο κώδικας προσπαθεί για τη διαίρεση ενός αριθμού με το μηδέν. Αυτή είναι μια εσφαλμένη λειτουργία που προκαλεί μια διαίρεση με μηδέν εξαίρεσης. Ευτυχώς, τοCatchμπλοκ συλλαμβάνει αυτού του σφάλματος και το παράθυρο της κονσόλας εμφανίζει το ακόλουθο μήνυμα λάθους:
    A run-time error has occurred
    						
  5. Κλείστε το παράθυρο της κονσόλας.

Εντοπισμός πολλές εξαιρέσεις

Αυτή η ενότητα περιγράφει τον τρόπο χρήσης πολλώνCatchπροτάσεις για να χειρίζονται διαφορετικά σφάλματα.
  1. Ανοίξτε το έργο εφαρμογής κονσόλας που δημιουργήσατε στην προηγούμενη ενότητα.
  2. ΣτοΔευτερεύων κύριοςη διαδικασία, αντικαταστήστε τον κώδικα που αντιγράψατε στην προηγούμενη ενότητα με τον ακόλουθο κώδικα:
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Finally
      Console.ReadLine()
    End Try
    						
    Αυτός ο κώδικας περιλαμβάνει δύοCatchμπλοκ: μία για να τραβήξετε την προηγούμενη διαίρεση με μηδέν και μία για τον εντοπισμό του νέου σφάλματος υπερχείλισης.
  3. Στο διακομιστήΟ εντοπισμός σφαλμάτωνμενού, κάντε κλικ στο κουμπίStartΓια να εκτελέσετε την εφαρμογή. Στο παράθυρο της κονσόλας εμφανίζει το ακόλουθο μήνυμα λάθους:
    Error: Overflow
    						
  4. Κλείστε το παράθυρο της κονσόλας.
  5. Επειδή δεν είναι δυνατό να προβλέπετε πάντα κάθε μήνυμα λάθους που ενδέχεται να προκύψουν, μπορείτε να προσθέσετε έναΕντοπισμός όλωνμπλοκ για μη αναμενόμενες εξαιρέσεις. Για παράδειγμα, προσθέστε τον ακόλουθο κώδικα πριν από τηνΤέλοςπρόταση για να τραβήξετε απρόβλεπτες σφάλματα και να εμφανίσετε το κατάλληλο μήνυμα:
    Catch exc As Exception
    Console.WriteLine("Error: " & exc.Message)
    					
  6. Στο διακομιστήFILEμενού, κάντε κλικ στο κουμπίΚλείσιμο της λύσης.

Δημιουργήστε μια εξαίρεση

Δομημένη εξαίρεση χειρισμό χρήσεις τηςCatchπρόταση για να τραβήξετε μια εξαίρεση. Εξαίρεση δομημένη χειρίζεται επίσης παρέχει έναν τρόπο για να δημιουργήσει μια εξαίρεση. Για παράδειγμα, είναι χρήσιμο να δημιουργήσει μια εξαίρεση κατά την εκτέλεση επικύρωσης δεδομένων μέσα σε έναΟρισμός ιδιότηταςη διαδικασία επειδή θέλετε να δημιουργήσει ένα σφάλμα αν ένας κανόνας της επιχείρησης παραβιαστεί.
  1. Ξεκινήστε το Visual Studio .NET ή Visual Studio 2005.
  2. Δημιουργήστε ένα νέο έργο εφαρμογής κονσόλας σε Visual Basic .NET ή Visual Basic του 2005.
  3. Στο διακομιστήΤο έργομενού, κάντε κλικ στο κουμπίΠροσθήκη κατηγορίας.
  4. ΣτοΠροσθήκη νέου στοιχείουπαράθυρο, τύποςclsPerson.vbΣτοNAMEπλαίσιο κειμένου και στη συνέχεια κάντε κλικOk.
  5. Προσθέστε τον ακόλουθο κώδικα στο εσωτερικό τουΔημόσια clsPerson κλάσης... End Classπροτάσεις:
    Private mintAge As Integer
    
    Public Property Age() As Integer
      Get
        Age = mintAge
      End Get
      Set(ByVal Value As Integer)
        If Value >= 0 Then
          mintAge = Value
        Else
          Throw New ArgumentException ("Age cannot be negative")
        End If
      End Set
    End Property
    						
    Αυτός ο κώδικας δημιουργεί έναΗλικίαΙδιότητα. Επειδή ένα άτομο δεν μπορεί να έχει μια αρνητική ηλικία, σφάλμα ενεργοποιείται όταν ο χρήστης της κλάσης προσπαθεί να ορίσειΗλικίασε έναν αριθμό που είναι μικρότερος από το μηδέν.
  6. ΣτοΔευτερεύων κύριοςη διαδικασία Module1.vb, προσθέστε τον ακόλουθο κώδικα:
    Dim p As New clsPerson()
    
    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
    					
  7. Στο διακομιστήΟ εντοπισμός σφαλμάτωνμενού, κάντε κλικ στο κουμπίStartΓια να εκτελέσετε την εφαρμογή. Στο παράθυρο της κονσόλας εμφανίζει το ακόλουθο μήνυμα λάθους:
    Age cannot be negative
    						
  8. Κλείστε το παράθυρο της κονσόλας.

Ολοκλήρωση της λίστας κωδικών

Εντοπίζει μια εξαίρεση

Module Module1

  Sub Main()
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try

  End Sub

End Module
				

Εντοπισμός πολλές εξαιρέσεις

Module Module1

  Sub Main()
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Catch exc As Exception
      Console.WriteLine("Error: " & exc.Message)
    Finally
      Console.ReadLine()
    End Try


  End Sub

End Module
				

Δημιουργήστε μια εξαίρεση

Module Module1

  Sub Main()
    Dim p As New clsPerson()

    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
  End Sub

End Module

Public Class clsPerson

  Private mintAge As Integer

  Public Property Age() As Integer
    Get
      Age = mintAge
    End Get
    Set(ByVal Value As Integer)
      If Value >= 0 Then
        mintAge = Value
      Else
        Throw New ApplicationException("Age cannot be negative")
      End If
    End Set
  End Property

End Class
				

Αναφορές

Για περισσότερες πληροφορίες, ανατρέξτε στις ακόλουθες τοποθεσίες της Microsoft στο Web:
Σφάλμα κατά το χειρισμό της κατεύθυνσης VB.NET: κατοικούν με εξαιρέσεις (έναΟι προγραμματιστές της Visual Basicτο άρθρο)
http://MSDN.Microsoft.com/Library/Default.asp?URL=/Library/en-us/dnvbdev01/HTML/vb01f1.asp

Πώς μου Catch μιας εξαίρεσης
http://Samples.gotdotnet.com/quickstart/howto/doc/catch.aspx

Με ποιον τρόπο μου δημιουργήσει μια εξαίρεση
http://Samples.gotdotnet.com/quickstart/howto/doc/throw.aspx

Ιδιότητες

Αναγν. άρθρου: 315965 - Τελευταία αναθεώρηση: Τρίτη, 21 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB315965 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:315965

Αποστολή σχολίων