我需要捕获可能由 try...catch 构造中的代码抛出的异常,并根据异常类型执行某些操作。但如果抛出任何异常,我也想做一些代码。 我这样做了:
try
{
// code
}
catch (...)
{
try
{
throw;
}
catch (exc1)
{
// handling
}
catch (exc2)
{
// handling
}
// here is code that are executed if any exception are thrown
}
我的代码有效,但我想知道标准是否对此有任何说明。 也许有更好的方法?
UPD:对于评论回复缓慢,我们深表歉意。很简单,英语对我来说是第二语言。
UPD:我认为 AdelNick 的代码或 Steve Jessop 的第二个代码或 David Rodríguez 的第二个代码 - dribeas 适合我。
最佳答案
你的方法不好,因为//这里是抛出任何异常时执行的代码
如果exc1
或都不会执行>exc2
分支捕获异常。您的代码是以下代码的等效版本:
try
{
// code
}
catch (exc1)
{
// handling
}
catch (exc2)
{
// handling
}
// here is code that are executed if any exception are thrown
C++
语言不支持 finally block ,如果您需要的话。这是因为对象的析构函数负责释放资源,而不是 finally block 。这是 Stroustrup's explanation的主题。
关于c++ - 嵌套的 catch 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20330194/