【发布时间】:2015-01-09 02:34:04
【问题描述】:
我有一个函数 foo 可以抛出 bar 异常。
在另一个函数中,我调用foo,但如果抛出bar 异常,我可以添加更多细节。 (我宁愿不将此类信息作为参数传递给foo,因为由于该函数的通用性质,它并不真正属于那里。)
所以我在调用者中这样做:
try {
foo();
} catch (bar& ex){
ex.addSomeMoreInformation(...);
throw;
}
throw 会重新抛出修改后的异常还是我需要使用throw ex;?后者可能会采用价值副本,所以我宁愿不这样做。 throw 也会接受价值副本吗?我怀疑它不会。
(我知道我可以验证,但我担心会遇到未指定或未定义的构造,所以想确定一下)。
【问题讨论】:
标签: c++ exception exception-handling language-lawyer throw