cpp:exception_specifiers
Δήλωση των εξαιρέσεων που παράγουν οι συναρτήσεις (exception specifiers)
Κατά τη δήλωση μίας συνάρτησης είναι δυνατόν να ορίσετε εάν αυτή μπορεί να παράγει κάποιου είδους exception. Υπάρχουν 3 διαφορετικού τύποι ορισμών οι οποίοι δίνονται παρακάτω:
int functionName() throw()
: Ο συγκεκριμένος ορισμός δηλώνει ότι δεν παράγεται καμία εξαίρεση.int functionName() throw(std::bad_alloc)
: Ο συγκεκριμένος ορισμός δηλώνει ότι μπορεί να παραχθεί μία εξαίρεση τύπου std::bad_alloc.int functionName() throw(…)
: Ο συγκεκριμένος ορισμός δηλώνει ότι μπορεί να παραχθεί οποιουδήποτε τύπου εξαίρεση.
Τους παραπάνω ορισμούς είναι δυνατόν να τους συναντήσετε στις standard βιβλιοθήκες της C++. Δεν είναι όμως ευρέως χρησιμοποιούμενοι και η υποστήριξη τους από τους C++ compilers είναι συχνά ελλειπής. Δεν συνιστάται η χρήση τους σε κώδικα που γράφετε εσείς, λόγω της ελλειπούς υποστήριξης από την κοινότητα της C++.
Στο παρακάτω παράδειγμα, κατά τη μεταγλώττιση, ο compiler δεν διαμαρτύρεται για τη μη διαχείριση του exception που παράγει η μέθοδος function1.
- exception_specifiers.cpp
#include <iostream> using namespace std; int function1() throw(std::bad_alloc) { throw new std::bad_alloc; return 10; } int main() { cout << function1() << endl; }
cpp/exception_specifiers.txt · Last modified: 2019/05/06 07:50 (external edit)