This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
|
cpp:exception [2020/05/04 08:53] gthanos |
cpp:exception [2022/05/23 03:52] gthanos |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Δημιουργία | + | ====== Δημιουργία |
| Ας εξετάσουμε την κλάση **Vector** που είδαμε στην ενότητα της υπερφόρτωση τελεστών. Ο προσδιοριστής //nothrow// σε συνδυασμό με τον τελεστή **new** μας υποχρεώνει να ελέγξουμε την επιστρεφόμενη τιμή του τελεστή **new** για να δούμε έαν έχει αποτύχει η διαδικασία δέσμευσης μνήμης ή όχι και στην περίπτωση που έχουμε αποτυχία τερματίζουμε το πρόγραμμα. | Ας εξετάσουμε την κλάση **Vector** που είδαμε στην ενότητα της υπερφόρτωση τελεστών. Ο προσδιοριστής //nothrow// σε συνδυασμό με τον τελεστή **new** μας υποχρεώνει να ελέγξουμε την επιστρεφόμενη τιμή του τελεστή **new** για να δούμε έαν έχει αποτύχει η διαδικασία δέσμευσης μνήμης ή όχι και στην περίπτωση που έχουμε αποτυχία τερματίζουμε το πρόγραμμα. | ||
| - | <code cpp Vector.cpp> | + | <code cpp Vector.hpp> |
| #include < | #include < | ||
| #include < | #include < | ||
| Line 18: | Line 18: | ||
| int & | int & | ||
| }; | }; | ||
| + | </ | ||
| + | <code cpp Vector.cpp> | ||
| + | #include " | ||
| Vector:: | Vector:: | ||
| size = length; | size = length; | ||
| Line 46: | Line 49: | ||
| <code cpp VectorUse.cpp> | <code cpp VectorUse.cpp> | ||
| - | #include " | + | #include " |
| int main() { | int main() { | ||
| Line 60: | Line 63: | ||
| Η παραγωγή ενός // | Η παραγωγή ενός // | ||
| - | <code cpp Vector.cpp> | + | <code cpp Vector.hpp> |
| #include < | #include < | ||
| #include < | #include < | ||
| Line 75: | Line 78: | ||
| int & | int & | ||
| }; | }; | ||
| + | |||
| + | </ | ||
| + | |||
| + | <code cpp Vector.cpp> | ||
| + | #include " | ||
| Vector:: | Vector:: | ||
| Line 97: | Line 105: | ||
| <code cpp VectorUse.cpp> | <code cpp VectorUse.cpp> | ||
| - | #include " | + | #include " |
| int main() { | int main() { | ||
| Line 107: | Line 115: | ||
| Vector v(size); | Vector v(size); | ||
| } catch(std:: | } catch(std:: | ||
| - | cout << " | + | |
| - | continue; | + | |
| + | continue; | ||
| + | } | ||
| + | exit(-1); | ||
| } | } | ||
| for(int i=0; i<size; i++) | for(int i=0; i<size; i++) | ||
| Line 117: | Line 128: | ||
| <WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
| - | Στο παραπάνω απλό παράδειγμα είναι προφανές ότι είναι πιο απλό να ελέγξει κανείς το μέγεθος της παραμέτρου //size// πριν καλέσει τον κατασκευαστή. Σε αυτή την περίπτωση, | + | Στο παραπάνω απλό παράδειγμα είναι προφανές ότι είναι πιο απλό να ελέγξει κανείς το μέγεθος της παραμέτρου //size// πριν καλέσει τον κατασκευαστή. Σε αυτή την περίπτωση, |
| </ | </ | ||
| Line 199: | Line 210: | ||
| } | } | ||
| </ | </ | ||
| - | πιάνει όλους τους τύπους | + | διαχειρίζεται όλους τους τύπους |
| + | |||
| + | Εφόσον, | ||
| </ | </ | ||