C++ 成功 `try` 分支

标签 c++ try-catch

让我们考虑一些人工 C++ 代码:

int i = 0;

try { someAction(); }
catch(SomeException &e) { i = -1; }

i = 1;

... // code that uses i

我希望此代码将 -1 分配给 i 以防 someAction() 抛出异常并分配 1 如果没有异常的话。正如您现在看到的,这段代码是错误的,因为 i 最终总是变成 1。当然,我们可以做一些技巧性的解决方法,例如:

int i = 0;
bool throwed = false;

try { someAction(); }
catch(SomeException &e) { throwed = true; }

i = throwed ? -1 : 1;

... // code that uses i

我的问题是:C++ 中是否有类似“成功的 try 分支”的东西,如果 try block 中没有任何抛出,我会在其中执行一些操作? 像这样的东西:

int i = 0;

try { someAction(); }
catch(SomeException &e) { i = -1; }
nocatch { i = 1; }

... // code that uses i

当然,C++ 中没有 nocatch,但也许有一些常见的漂亮解决方法?

最佳答案

int i = 0;

try { someAction(); i = 1; }
catch(SomeException &e) { i = -1; }

关于C++ 成功 `try` 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46424322/

相关文章:

c++ - QT UI双分割器

c++ - Boost.Spirit 可以在理论上/实践上用于解析 C++(0x)(或任何其他语言)吗?

c++ - 为什么这个程序没有打印返回迭代器的正确第二个元素?

php - 在文件未上传的 PHP 中尝试 catch 语句

c# - 继续使用 catch block 中设置的值的不良做法?

c# - C# 中的 IsNumeric 函数

c++ - VS2008 C++ lib项目属性设置问题

c++ - IAR EW for ARM 分析器

java - 未报告的异常......必须捕获或声明抛出

php - 对所有PDO查询进行一次全局尝试{}捕获{}