cpp:exception
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
cpp:exception [2019/05/06 07:17] – [Κληρονομικότητα εξαιρέσεων] gthanos | cpp:exception [2019/05/06 07:19] – [Stack Unwinding] gthanos | ||
---|---|---|---|
Line 205: | Line 205: | ||
- | ===== Stack Unwinding ===== | ||
- | |||
- | Κατά την δημιουργία ενός // | ||
- | |||
- | <code cpp StackUnwinding.cpp> | ||
- | #include < | ||
- | // called by FFF() | ||
- | void FFFF() { | ||
- | std::cout << "Start FFFF\n"; | ||
- | std::cout << "FFFF throwing int literal exception\n"; | ||
- | throw 100; | ||
- | std::cout << "End FFFF\n"; | ||
- | |||
- | } | ||
- | // called by FF() | ||
- | void FFF() { | ||
- | std::cout << "Start FFF\n"; | ||
- | FFFF(); | ||
- | std::cout << "End FFF\n"; | ||
- | } | ||
- | // called by F() | ||
- | void FF() { | ||
- | std::cout << "Start FF\n"; | ||
- | try { | ||
- | FFF(); | ||
- | } catch(char) { | ||
- | std::cerr << "FF caught double exception\n"; | ||
- | } | ||
- | std::cout << "End FF\n"; | ||
- | } | ||
- | // called by main() | ||
- | void F() { | ||
- | std::cout << "Start F\n"; | ||
- | try { | ||
- | FF(); | ||
- | } catch (int) { | ||
- | | ||
- | } catch (char) { | ||
- | | ||
- | } | ||
- | std::cout << "End F\n"; | ||
- | } | ||
- | |||
- | int main() { | ||
- | std::cout << "Start main\n"; | ||
- | try { | ||
- | F(); | ||
- | } catch (int) { | ||
- | std::cerr << "main caught int exception\n"; | ||
- | } | ||
- | std::cout << "End main\n"; | ||
- | return 0; | ||
- | } | ||
- | </ | ||
- | |||
- | Το αποτέλεσμα που εκτυπώνεται στην οθόνη είναι το εξής: | ||
- | < | ||
- | 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// στο παρακάτω πρόγραμμα δίνεται στο παρακάτω διάγραμμα. Παρατηρήστε ότι το exception παράγεται στη συνάρτηση **FFFF()**, αλλά " | ||
- | |||
- | {{ : | ||
===== Διαχείριση μίας εξαίρεσης και παραγωγή νέας εξαίρεσης κατά την διαχείριση της ===== | ===== Διαχείριση μίας εξαίρεσης και παραγωγή νέας εξαίρεσης κατά την διαχείριση της ===== |
cpp/exception.txt · Last modified: 2023/05/15 14:01 by gthanos