Differences
This shows you the differences between two versions of the page.
| Both sides previous revision
Previous revision
|
Last revision
Both sides next revision
|
cpp:stack_unwinding [2021/05/25 07:59] gthanos |
cpp:stack_unwinding [2023/05/15 14:12] gthanos |
| Κατά την δημιουργία ενός //exception// μέσα σε μία συνάρτηση ή σε ένα κατασκευαστή δεν είναι απαραίτητο ότι η διαχείριση του //exception// θα πρέπει να γίνει στην ίδια τη συνάρτηση ή τον καστασκευαστή. Η διαδικασία όνομάζεται //stack unwinding// και το παράδειγμα που ακολουθεί είναι εξαρειτικά διαφωτιστικό για το πως διαμορφώνεται το stack μετά από την διαχείριση μίας εξαίρεσης σε υψηλότερο επίπεδο. | Κατά την δημιουργία ενός //exception// μέσα σε μία συνάρτηση ή σε ένα κατασκευαστή δεν είναι απαραίτητο ότι η διαχείριση του //exception// θα πρέπει να γίνει στην ίδια τη συνάρτηση ή τον καστασκευαστή. Η διαδικασία όνομάζεται //stack unwinding// και το παράδειγμα που ακολουθεί είναι εξαρειτικά διαφωτιστικό για το πως διαμορφώνεται το stack μετά από την διαχείριση μίας εξαίρεσης σε υψηλότερο επίπεδο. |
| |
| <code cpp StackUnwinding.cpp> | <code cpp Vector.hpp> |
| #include <iostream> | #include <iostream> |
| #include <cstdlib> | #include <cstdlib> |
| ~Vector(); | ~Vector(); |
| }; | }; |
| | </code> |
| |
| | <code cpp Vector.cpp> |
| Vector::Vector(int length) { | Vector::Vector(int length) { |
| cout << "Create vector of size: " << length << endl; | cout << "Create vector of size: " << length << endl; |
| delete [] array; | delete [] array; |
| } | } |
| | </code> |
| |
| | <code cpp StackUnwinding.cpp> |
| | #include <iostream> |
| | #include <cstdlib> |
| | using namespace std; |
| |
| // called by FFF() | // called by FFF() |