2009-06-28 16 views
12

Tutte le eccezioni di boost derivano da std :: exception? Se no, derivano tutti da qualche classe base di eccezione?eccezioni boost

risposta

10

Secondo the documentationboost::exception non eredita std::exception.

Il FAQ spiega perché.

Tuttavia, this page spiega come utilizzare correttamente le eccezioni Boost.

+3

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'. –

1

Credo di si. Non riesco a pensare ad una libreria boost che lancia qualcosa di non-std :: basato su eccezioni.

7

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.

Problemi correlati