我将 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 块中编写清理代码吗?有什么办法可以避免编写重复的代码?
注意:: [ In method1() ] 我想重新抛出发生在我的调用者身上的异常。所以我不能在单个 catch 块中捕获它们,因为这样会丢失类型信息。