Προγραμματισμός

Πώς να εφαρμόσετε μια προσαρμοσμένη κατηγορία εξαίρεσης στο C #

Εξαίρεση είναι ένα σφάλμα που παρουσιάζεται κατά το χρόνο εκτέλεσης και τερματίζει την κανονική ροή εκτέλεσης ενός προγράμματος εάν δεν αντιμετωπιστεί σωστά. Όταν συμβαίνουν εξαιρέσεις, μπορεί να μην θέλετε να αποκαλύψετε το πραγματικό ίχνος στοίβας ή το μήνυμα εξαίρεσης στον χρήστη. Οι εξατομικευμένες εξαιρέσεις μπορούν να χρησιμοποιηθούν για την προσθήκη σαφών, ουσιαστικών και φιλικών προς τον χρήστη πληροφοριών σε εξαιρέσεις όταν προκύπτουν σφάλματα κατά την εκτέλεση του προγράμματος.

Η βασική κλάση για όλες τις εξαιρέσεις στο .Net είναι Εξαίρεση. Όλες οι τάξεις της ιεραρχίας εξαίρεσης προέρχονται άμεσα ή έμμεσα από αυτήν την τάξη. Σημειώστε ότι το System.ApplicationException και System.SystemException μαθήματα επεκτείνουν το Σύστημα. Εξαίρεση τάξη, η οποία με τη σειρά της προέρχεται από το Σύστημα. Αντικείμενο τάξη. Σημειώστε ότι οι εξαιρέσεις μοιάζουν με άλλους τύπους στο .Net.

ApplicationException εναντίον System.Exception

Για να δημιουργήσετε μια προσαρμοσμένη κατηγορία εξαίρεσης, πρέπει να ορίσετε έναν τύπο. Κατά το σχεδιασμό προσαρμοσμένων τάξεων εξαίρεσης, θα πρέπει να αντλήσετε την τάξη σας από Σύστημα. Εξαίρεση και όχι από ApplicationException. ApplicationException αρχικά προοριζόταν να χρησιμοποιηθεί για τη δημιουργία εξαιρέσεων καθορισμένων από τον χρήστη, αλλά δεν συνιστάται πλέον η χρήση του. Όπως αναφέρει η τεκμηρίωση της Microsoft:

Θα πρέπει να αντλήσετε προσαρμοσμένες εξαιρέσεις από τοΕξαίρεση τάξη και όχι τοApplicationException τάξη. Δεν πρέπει να ρίξετε έναApplicationException εξαίρεση στον κωδικό σας και δεν πρέπει να πιάσετε έναApplicationException εξαίρεση εκτός εάν σκοπεύετε να ρίξετε ξανά την αρχική εξαίρεση.

Ο λόγος ApplicationException έχει καταργηθεί είναι ότι η χρήση του επεκτείνει άσκοπα την ιεραρχία εξαιρέσεων. παρόλο που το ApplicationException η τάξη επεκτείνει το Εξαίρεση τάξη, δεν προσθέτει νέα λειτουργικότητα. Ο μόνος σκοπός του ήταν να παρέχει έναν τρόπο διάκρισης μεταξύ εξαιρέσεων που ορίζονται από εφαρμογές και εξαιρέσεων που ορίζονται από το σύστημα.

Σχεδιάζοντας μια προσαρμοσμένη κατηγορία εξαίρεσης

Ας βρούμε τώρα κάποιο κωδικό. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να ξεκινήσετε τη δημιουργία μιας προσαρμοσμένης κλάσης εξαίρεσης στο C #, αντλώντας το Σύστημα. Εξαίρεση τάξη. Λάβετε υπόψη ότι πρέπει να δώσετε ένα νόημα όνομα στην προσαρμοσμένη κατηγορία εξαίρεσης. Σε αυτό το παράδειγμα, θα δημιουργήσουμε μια προσαρμοσμένη κατηγορία εξαίρεσης με το όνομα Είσοδος Εξαίρεση, τα οποία μπορούν να χρησιμοποιηθούν για την παγίδευση σφαλμάτων που ενδέχεται να προκύψουν όταν ένας χρήστης συνδέεται στο σύστημα, π.χ. εάν τα διαπιστευτήρια χρήστη είναι λανθασμένα.

δημόσια τάξη LoginException: System.Exception

    {

//ΝΑ ΚΑΝΩ

    }

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

δημόσια τάξη LoginException: System.Exception

    {

        ///

/// Προεπιλεγμένος κατασκευαστής

        ///

δημόσια είσοδος Εξαίρεση (): βάση ()

        {

        }

        ///

/// Κατασκευαστής επιχειρημάτων

        ///

/// Αυτή είναι η περιγραφή της εξαίρεσης

δημόσιο LoginException (μήνυμα συμβολοσειράς): βάση (μήνυμα)

        {

        }

        ///

/// Κατασκευαστής επιχειρημάτων με εσωτερική εξαίρεση

        ///

/// Αυτή είναι η περιγραφή της εξαίρεσης

/// Εσωτερική εξαίρεση

δημόσιο LoginException (String message, Exception innerException): βάση (μήνυμα, innerException)

        {

        }

        ///

/// Κατασκευαστής επιχειρημάτων με υποστήριξη σειριοποίησης

        ///

/// Περίπτωση SerializationInfo

/// Παρουσία του StreamingContext

προστατευμένη LoginException (Πληροφορίες SerializationInfo, περιβάλλον StreamingContext): βάση (πληροφορίες, περιβάλλον)

        {

        }

    }

Σημειώστε τη χρήση των παραμέτρων στον κατασκευαστή του LoginException τάξη και πώς καλούνται οι κατασκευαστές βασικής τάξης. Σημειώστε επίσης πώς χρησιμοποιείται ο τελευταίος κατασκευαστής ορίσματος για να παρέχει υποστήριξη για σειριοποίηση.

Χρησιμοποιώντας μια προσαρμοσμένη κατηγορία εξαίρεσης

Η ακόλουθη λίστα κωδικών δείχνει πώς μπορείτε να χρησιμοποιήσετε το LoginException τάξη που μόλις εφαρμόσαμε.

static void Main (συμβολοσειρά [] args)

        {

δοκιμάστε

            {

// Γράψτε τον κωδικό εδώ για να συνδεθείτε στον χρήστη.

// Εάν τα παρεχόμενα διαπιστευτήρια δεν είναι έγκυρα

// ρίχνεται ένα αντικείμενο εξαίρεσης.

ρίξτε νέο LoginException ("Παρέχονται μη έγκυρα διαπιστευτήρια ...");

            }

catch (LoginException loginException)

            {

// Γράψτε τον κωδικό εδώ για να χειριστείτε την εξαίρεση

Console.WriteLine (loginException.Message);

            }

Κονσόλα. Διαβάστε ();

        }

Λάβετε υπόψη ότι πρέπει να εφαρμόσετε προσαρμοσμένες κατηγορίες εξαιρέσεων μόνο όταν θέλετε να προσθέσετε περισσότερες λειτουργίες στον χειρισμό εξαιρέσεων στις εφαρμογές σας ή όταν είναι λογικό να δώσετε στον χρήστη πρόσθετες πληροφορίες. Στις περισσότερες περιπτώσεις, θα θελήσετε να βασιστείτε στις τυπικές εξαιρέσεις. Το Net σας δίνει.