cpp:exception
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
cpp:exception [2018/05/18 14:54] – [Stack Unwinding] gthanos | cpp:exception [2018/05/19 03:32] – [Stack Unwinding] gthanos | ||
---|---|---|---|
Line 282: | Line 282: | ||
</ | </ | ||
- | Παρατηρήστε ότι ενώ στην 2η περίπτωση παράγεται ένα // | + | Παρατηρήστε ότι ενώ στην 2η περίπτωση παράγεται ένα // |
- | Η απάντηση στο παραπάνω ερώτημα είναι ότι αν και παράγεται ένα αντικείμενο τύπου // | + | Η απάντηση στο παραπάνω ερώτημα είναι ότι αν και παράγεται ένα αντικείμενο τύπου // |
Ο τρόπος για να δουλέψει σωστά ο παραπάνω κώδικας είναι μέσα στο //catch block// να μην περάσουμε το αντικείμενο γιατί δημιουργείται αντίγραφο, | Ο τρόπος για να δουλέψει σωστά ο παραπάνω κώδικας είναι μέσα στο //catch block// να μην περάσουμε το αντικείμενο γιατί δημιουργείται αντίγραφο, | ||
Line 326: | Line 326: | ||
DerivedException, | DerivedException, | ||
</ | </ | ||
+ | |||
+ | <WRAP tip 80% center round> | ||
+ | Το πιάσιμο μιας εξαίρεσης με χρήση αναφοράς για αντικείμενα σύνθετους τύπου (όχ char, int, long, double κλπ), διότι //α)// αποφεύγουμε την αντιγραφή του αντικειμένου μέσα στο //catch block// (πιο γρήγορος κώδικας) και //β)// αποφεύγουμε την " | ||
+ | </ | ||
===== Stack Unwinding ===== | ===== Stack Unwinding ===== | ||
Line 382: | Line 386: | ||
</ | </ | ||
+ | Το αποτέλεσμα που εκτυπώνεται στην οθόνη είναι το εξής: | ||
+ | < | ||
+ | Start main | ||
+ | Start F | ||
+ | Start FF | ||
+ | Start FFF | ||
+ | Start FFFF | ||
+ | FFFF throwing int literal exception | ||
+ | F caught int exception | ||
+ | End F | ||
+ | End main | ||
+ | </ | ||
+ | H εξέλιξη του //program stack// στο παρακάτω πρόγραμμα είναι η παρακάτω: | ||
cpp/exception.txt · Last modified: 2023/05/15 14:01 by gthanos