MEC++: Il catch di una eccezione

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