User Tools

Site Tools


cpp:exception

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
cpp:exception [2019/03/07 15:22] – [Κληρονομικότητα εξαιρέσεων] gthanoscpp:exception [2019/05/05 17:04] – [Διαχείριση Εξαιρέσεων] gthanos
Line 1: Line 1:
 ====== Διαχείριση Εξαιρέσεων ====== ====== Διαχείριση Εξαιρέσεων ======
  
-Ας εξετάσουμε την κλάση **Vector** που είδαμε στην υπερφόρτωση των τελεστών. Ο προσδιοριστής //nothrow// σε συνδυασμό με τον τελεστή **new** μας υποχρεώνει να ελέγξουμε την επιστρεφόμενη τιμή του τελεστή **new** για να δούμε έαν έχει αποτύχει η διαδικασία δέσμευσης μνήμης ή όχι και στην περίπτωση που έχουμε αποτυχία τερματίζουμε το πρόγραμμα. +Ας εξετάσουμε την κλάση **Vector** που είδαμε στην ενότητα της υπερφόρτωση τελεστών. Ο προσδιοριστής //nothrow// σε συνδυασμό με τον τελεστή **new** μας υποχρεώνει να ελέγξουμε την επιστρεφόμενη τιμή του τελεστή **new** για να δούμε έαν έχει αποτύχει η διαδικασία δέσμευσης μνήμης ή όχι και στην περίπτωση που έχουμε αποτυχία τερματίζουμε το πρόγραμμα. 
  
 <code cpp Vector.cpp> <code cpp Vector.cpp>
Line 43: Line 43:
 </code> </code>
  
-Αν και η παραπάνω διαδικασία δεν είναι λανθασμένη, έχει το βασικό μειονέκτημα ότι θα πρέπει να τερματίσουμε το πρόγραμμα, ακόμη και εάν ο λόγος αποτυχίας είναι ότι ο χρήστης της κλάσης επέτρεψε το πέρασμα αρνητικής τιμής ως όρισμα στον κατασκευαστή.+Αν και η παραπάνω διαδικασία δεν είναι λανθασμένη, έχει το βασικό μειονέκτημα ότι θα πρέπει να τερματίσουμε το πρόγραμμα, ακόμη και εάν ο λόγος αποτυχίας είναι ότι ο χρήστης της κλάσης επέτρεψε το πέρασμα αρνητικής τιμής ως όρισμα στον κατασκευαστή. Ο λόγος είναι ότι ακόμη και στην περίπτωση που αποτύχει η δέσμευση της μνήμης ο κατασκευαστής της κλάσης **Vector** επιστρέφει ένα αντικείμενο του οποίου η κατάσταση δεν είναι η αναμενόμενη.  
 + 
 +Επειδή, ο χρήστης της κλάσης **Vector** δεν έχει τρόπο να ελέγξει το "εσωτερικό" του αντικειμένου, υποθέτει πάντα ότι το αντικείμενο που επιστρέφεται είναι σωστό. Σε διαφορετική περίπτωση, ο κατασκευαστής θα πρέπει να τερματίσει το πρόγραμμα.
  
 <code cpp VectorUse.cpp> <code cpp VectorUse.cpp>
cpp/exception.txt · Last modified: 2023/05/15 14:01 by gthanos