gpt4 book ai didi

c++ - 嵌套的 catch 运算符

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:47 25 4
gpt4 key购买 nike

我需要捕获可能由 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com