Appunti tratti dalla rilettura di More Effective C++ di Scott Meyers. Terzo blocco: Eccezioni.
(13) Il catch di un eccezione va fatto per reference
Non é sicuro usare un puntatore, dato che si deve riferire ad un oggetto globale o statico. Ma questo é un requisito troppo facile da disattendere. Inoltre sarebbe in contrasto con le convenzioni del linguaggio, dato che le quattro eccezioni standard (bad_alloc, bad_cast, bad_typeid, bad_exception) sono oggetti.
Usare il mecccanismo by-value porta ad aggravi prestazionali (due copie dell'eccezione, invece della usuale singola copia) e al problema dello slicing, se si dovesse fare il catch di una eccezione derivata da quella specificata nella clausola.
Resta il by-reference, che risulta essere il modo migliore.
Nessun commento:
Posta un commento