Sto cercando di eseguire il debug dell'applicazione utilizzando i catch-rethrows delle eccezioni. Il mio codice di gestione delle eccezioni è più lungo di alcuni dei blocchi che sto eseguendo il debug, ed è tutto copia-incolla.Come rendere il codice di eccezione DRY?
Esiste un modo migliore per esprimere ripetutamente il codice riportato di seguito? Sospetto che le macro siano la strada da percorrere qui, ma di solito evito le macro come la peste.
try {
// Code here...
}
catch (std::exception & e)
{
ErrorMsgLog::Log("Error", "std exception caught in " __func__ " " __FILE__ " " __LINE__, e.what());
throw e;
}
catch (Exception & e)
{
ErrorMsgLog::Log("Error", "Builder exception caught in " __func__ " " __FILE__ " " __LINE__, e.Message);
throw e;
}
catch (...)
{
ErrorMsgLog::Log("Error", "Unknown exception caught in " __func__ " " __FILE__ " " __LINE__);
throw std::runtime_error ("Unknown Exception in " __func__ " " __FILE__ " " __LINE__);
}
'inoltrare' tutte le eccezioni a una funzione di modello? – user2485710
Imposta 'Exception' un sottotipo di' std :: exception', proprio come qualsiasi altro tipo di eccezione sane. – rightfold
1. Questo non è C++ 11. Non posso inoltrare. 2. L'eccezione è una classe Borland C++ Builder. Inoltre, anche se * solo * gestivo l'eccezione std ::, vorrei comunque allontanarmi dal copia-incolla di esso. – QuestionC