Πώς να χειριστείτε εύκολα τις εξαιρέσεις στη C++
Εξαίρεση Ο χειρισμός στη C++ αναφέρεται στον μηχανισμό ανίχνευσης σφαλμάτων χρόνου εκτέλεσης και αποτελεσματικού χειρισμού τους, όπως ο χειρισμός μη έγκυρων εισόδων, η διαίρεση ενός αριθμού με το μηδέν στις λειτουργίες διαίρεσης και πολλά άλλα.
Εξαίρεση Ο χειρισμός στη C++ περιλαμβάνει τρεις λέξεις-κλειδιά: δοκιμή, ρίψη και αλίευση. Η δήλωση try επιτρέπει στο χρήστη να ορίσει το μπλοκ κώδικα που μπορεί να δημιουργήσει μια εξαίρεση στον κώδικα. Η λέξη-κλειδί ρίχνει δημιουργεί μια εξαίρεση εάν εντοπιστεί μετά τον έλεγχο του μπλοκ κάτω από τη λέξη-κλειδί δοκιμής. Η λέξη-κλειδί catch περιέχει το μπλοκ κώδικα που μπορεί να χειριστεί την εξαίρεση που παρατηρείται στο μπλοκ δοκιμής.
Παράδειγμα 1: Χειρισμός εξαιρέσεων κατά τη διαίρεση
Ο κώδικας γράφεται για να ελέγχει τις εξαιρέσεις κατά τη διαίρεση.
#include
χρησιμοποιώντας χώρο ονομάτων std ;
ενθ κύριος ( ) {
διπλό αριθμητής, παρονομαστής, διαίρεση ;
cout << 'Εισαγάγετε μια τιμή αριθμητή: ' ;
τρώει >> αριθμητής ;
cout <> παρονομαστής ;
δοκιμάστε {
αν ( παρονομαστής == 0 )
βολή 0 ;
διαίρεση = αριθμητής / παρονομαστής ;
cout << αριθμητής << '/' << παρονομαστής << ' = ' << διαίρεση << endl ;
}
σύλληψη ( ενθ num_exception ) {
cout << 'Σφάλμα! Ο διαιρέτης δεν μπορεί να είναι ' << num_exception << endl ;
}
ΕΠΙΣΤΡΟΦΗ 0 ;
}
Σε αυτό το πρόγραμμα, ο χρήστης εισάγει την τιμή του αριθμητή και του παρονομαστή που δηλώνεται στην ενότητα main(). Στο μπλοκ try, μια εντολή if χρησιμοποιείται για να ελέγξει την εξαίρεση, δηλαδή εάν ο παρονομαστής είναι μηδέν ή όχι. Καθώς η διαίρεση δεν μπορεί να εκτελεστεί με μηδενικό διαιρέτη εάν ο παρονομαστής βρεθεί ότι είναι 0, θα δημιουργήσει μια εξαίρεση και το μπλοκ catch θα επιστρέψει ένα όρισμα σφάλματος διαφορετικά εκτελείται η λειτουργία απλής διαίρεσης.
Ο χρήστης εισάγει έναν αριθμητή 42 και ένα 0 στον παρονομαστή, ο οποίος δημιουργεί μια εξαίρεση, οπότε το πρόγραμμα επιστρέφει το όρισμα σφάλματος.
Ο χρήστης εισάγει έναν αριθμητή 42 και 2 ως παρονομαστή, καθώς δεν υπάρχει εξαίρεση, το αποτέλεσμα μετά τη διαίρεση επιστρέφει.
Παράδειγμα 2 Χειρισμός εξαιρέσεων για έλεγχο της ηλικίας
Αυτό το πρόγραμμα ελέγχει τις εξαιρέσεις στην ηλικία του χρήστη.
#includeχρησιμοποιώντας χώρο ονομάτων std ;
/*
Εδώ, θέλουμε να ρίξουμε εξαίρεση (ηλικία ως εξαίρεση) εάν η ηλικία του ατόμου είναι μικρότερη από 18.
*/
ενθ κύριος ( )
{
// έλεγχος εάν η ηλικία είναι μεγαλύτερη από 18 στο μπλοκ δοκιμής.
δοκιμάστε
{
ενθ ηλικία ;
cout << 'Εισαγάγετε την ηλικία σας για πρόσβαση: ' ;
τρώει >> ηλικία ;
αν ( ηλικία >= 18 )
{
cout << 'Πρόσβαση επετράπη.' ;
}
// Εφαρμόζεται προσαρμοσμένη εξαίρεση εάν η ηλικία είναι κάτω των 18 ετών.
αλλού
{
βολή ( ηλικία ) ;
}
}
// σύλληψη της εξαίρεσης και εμφάνιση της επιθυμητής εξόδου (δεν επιτρέπεται η πρόσβαση!)
σύλληψη ( ενθ Χ )
{
cout << 'Απαγορεύεται η πρόσβαση! Είσαι ανήλικος.' << endl ;
}
ΕΠΙΣΤΡΟΦΗ 0 ;
}
Σε αυτό το πρόγραμμα ορίζεται μια μεταβλητή με ακέραια τιμή. Ζητείται από τον χρήστη να εισαγάγει την ηλικία και να δοκιμάσει τον έλεγχο αποκλεισμού εάν η ηλικία του χρήστη είναι πάνω ή ίση με 18. Εάν δεν είναι αληθές, τότε εισάγει μια εξαίρεση και το μπλοκ εξαιρέσεων θα επιστρέψει το Access denied! Διαφωνία. Διαφορετικά, η πρόσβαση θα παραχωρηθεί.
Ο χρήστης εισάγει την ηλικία των 12 ετών για να ελέγξει την παραχώρηση πρόσβασης, καθώς αυτή η ηλικία είναι κάτω των 18 ετών, επομένως επιστρέφεται το όρισμα Απαγόρευση πρόσβασης.
Ο χρήστης εισάγει την ηλικία των 20 ετών, καθώς είναι άνω των 18, επομένως η πρόσβαση παρέχεται στον χρήστη.
Σημείωση : Εάν δεν υπάρχει αποκλεισμός catch στο πρόγραμμα, τότε το πρόγραμμα θα συμπεριφέρεται ασυνήθιστα και θα τερματίζεται απροσδόκητα σε περίπτωση εξαιρέσεων.
συμπέρασμα
Εξαίρεση Ο χειρισμός στη C++ αναφέρεται στον μηχανισμό ανίχνευσης σφαλμάτων χρόνου εκτέλεσης και αποτελεσματικού χειρισμού τους. Περιλαμβάνει τρεις λέξεις-κλειδιά δοκιμάστε, πετάξτε και πιάστε. Η εξαίρεση ελέγχεται για τον κώδικα στο μπλοκ δοκιμής, η λέξη-κλειδί ρίχνει την εξαίρεση εάν βρεθεί και το μπλοκ catch χειρίζεται την εξαίρεση που έχει τεθεί για το μπλοκ δοκιμής. Ο χειρισμός εξαιρέσεων κάνει την εμπειρία χρήστη ομαλή και εξαιρετική, αποφεύγοντας σφάλματα χρόνου εκτέλεσης.