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/21 02:13] – gthanos | cpp:exception [2019/05/06 07:15] – [Δημιουργία και διαχείριση της εξαίρεσης] gthanos | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Διαχείριση Εξαιρέσεων ====== | ====== Διαχείριση Εξαιρέσεων ====== | ||
- | Ας εξετάσουμε την κλάση **Vector** που είδαμε στην υπερφόρτωση | + | Ας εξετάσουμε την κλάση **Vector** που είδαμε στην |
<code cpp Vector.cpp> | <code cpp Vector.cpp> | ||
Line 43: | Line 43: | ||
</ | </ | ||
- | Αν και η παραπάνω διαδικασία δεν είναι λανθασμένη, | + | Αν και η παραπάνω διαδικασία δεν είναι λανθασμένη, |
<code cpp VectorUse.cpp> | <code cpp VectorUse.cpp> | ||
Line 58: | Line 58: | ||
</ | </ | ||
- | Η παραγωγή ενός exception μπορεί να επιλύσει πιο αποτελεσματικά το παραπάνω πρόβλημα διότι | + | Η παραγωγή ενός |
<code cpp Vector.cpp> | <code cpp Vector.cpp> | ||
Line 78: | Line 78: | ||
Vector:: | Vector:: | ||
size = length; | size = length; | ||
- | array = new (nothrow) | + | array = new int[size]; |
for(int i=0; i<size; i++) | for(int i=0; i<size; i++) | ||
array[i] = 0; | array[i] = 0; | ||
Line 117: | Line 117: | ||
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
- | Αν και στο παραπάνω απλό παράδειγμα είναι προφανές ότι είναι πιο απλό να ελέγξει κανείς το μέγεθος της παραμέτρου size πριν καλέσει τον κατασκευαστή, κάτι τέτοιο | + | Στο παραπάνω απλό παράδειγμα είναι προφανές ότι είναι πιο απλό να ελέγξει κανείς το μέγεθος της παραμέτρου |
</ | </ | ||
===== Τύποι παραγόμενων εξαιρέσεων ===== | ===== Τύποι παραγόμενων εξαιρέσεων ===== | ||
Line 164: | Line 164: | ||
break; | break; | ||
case 4: | case 4: | ||
- | throw string(" | + | throw string(" |
break; | break; | ||
case 5: | case 5: | ||
Line 170: | Line 170: | ||
break; | break; | ||
default: | default: | ||
- | c = -10; throw c; // throw a character | + | c = -10; throw c; // throw a character |
break; | break; | ||
} | } | ||
Line 338: | Line 338: | ||
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
- | Το πιάσιμο μιας εξαίρεσης με χρήση αναφοράς για αντικείμενα σύνθετους τύπου (όχ char, int, long, double κλπ), διότι //α)// αποφεύγουμε την αντιγραφή του αντικειμένου μέσα στο //catch block// (πιο γρήγορος κώδικας) και //β)// αποφεύγουμε την " | + | Το πιάσιμο μιας εξαίρεσης με χρήση αναφοράς για αντικείμενα σύνθετου τύπου (όχι char, int, long, double κλπ), διότι //α)// αποφεύγουμε την αντιγραφή του αντικειμένου μέσα στο //catch block// (πιο γρήγορος κώδικας) και //β)// αποφεύγουμε την " |
</ | </ | ||
Line 552: | Line 552: | ||
cerr << " | cerr << " | ||
in.close(); | in.close(); | ||
- | throw ex; // rethrows the same exception object | + | throw; |
} | } | ||
</ | </ |
cpp/exception.txt · Last modified: 2023/05/15 14:01 by gthanos