Tutte le eccezioni di boost derivano da std :: exception? Se no, derivano tutti da qualche classe base di eccezione?eccezioni boost
risposta
Secondo the documentationboost::exception
non eredita std::exception
.
Il FAQ spiega perché.
Tuttavia, this page spiega come utilizzare correttamente le eccezioni Boost.
Credo di si. Non riesco a pensare ad una libreria boost che lancia qualcosa di non-std :: basato su eccezioni.
Una libreria "buon cittadino Boost" dovrebbe utilizzare boost::throw_exception
per supportare le configurazioni in cui la gestione delle eccezioni è disabilitata.
La funzione boost::throw_exception
richiede che il tipo di eccezione passata deriva pubblicamente da std::exception
(dalla versione 1.37.0 o giù di lì boost::throw_exception
emetterà un errore di compilazione se tale condizione non è soddisfatta.) Inoltre e per impostazione predefinita, eccezioni emessi utilizzando boost::throw_exception
derivi da boost::exception
.
Tuttavia, non è necessario per le librerie Boost generare eccezioni tramite boost:throw_exception
o derivare da std::exception
.
Boost.Exception è un framework per eccezioni memorizzabili e riscrivibili. Non vengono lanciati direttamente da alcuna libreria di boost. Le FAQ http://www.boost.org/doc/libs/1_39_0/libs/exception/doc/frequently_asked_questions.html spiegano perché 'boost :: exception' non eredita da' std :: exception'. –