我只是问一个由于好奇而出现的一般性问题,当我在一个库项目中工作时,在另一个方法中抛出异常的返回值,但我想将该异常转换为返回值.我使用多个try catch块解决了它,但只是想知道在抛出异常后C++中是否有一种方法可以恢复.
我不完全确定你想要什么.在异常之后,异常不会恢复将异常转换为返回代码.C++委员会考虑恢复,但目前尚不清楚这可能意味着什么.考虑:
int
someFunction()
{
// ...
if ( someCondition ) {
throw SomeException();
}
assert( !someCondition );
// ...
}
Run Code Online (Sandbox Code Playgroud)
在C++中,assert永远不会触发(并且通常不会写入它,因为if并且throw明确说明断言条件之后是有效的).如果你可以恢复异常,那么assert会(或至少可能)触发; 你放弃了一种重要的代码验证方法.
另外,在其他语言中使用它的人报告它实际上并不能很好地工作,并且在他们开始使用恢复的每种情况下,他们都必须将代码更改为以后不再使用它.
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |