Я использую QT 4.8 (C++ )для проекта настольного приложения и пишу обработку исключений, которая выглядит следующим образом:
void callerMethod()
{
try
{
method1();
}
catch(Exception1& e)
{
// display critcal error message
// abort application
}
catch(std::Exception& e)
{
// print exception error message
}
catch(...)
{
// print unknown exception message
}
}
void method1()
{
try
{
// some initializations
// some operations (here exceptions can occur)
// clean-up code (for successful operation i.e no exception occurred)
}
catch(Exception1& e)
{
// clean-up code
throw e;
}
catch(Exception2& e)
{
// clean-up code
throw e;
}
catch(Exception3& e)
{
// clean-up code
throw e;
}
catch(...)
{
// clean-up code
throw;
}
}
Итак, мой вопрос нужно ли мне писать код очистки -в каждом блоке catch ? Можно ли как-нибудь избежать написания повторяющегося кода ?
ПРИМЕЧАНИЕ ::[ В методе 1()] Я хочу повторно -генерировать исключения, которые произошли моему вызывающему абоненту. Поэтому я не могу поймать их в одном блоке catch, потому что тогда информация о типе будет потеряна.