让我们考虑一些人工 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/