Πώς να χειριστείτε εύκολα τις εξαιρέσεις στη C++

Pos Na Cheiristeite Eukola Tis Exaireseis Ste C



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

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