【发布时间】:2013-07-16 19:47:08
【问题描述】:
【问题讨论】:
-
@LeonLi 不,这个问题是问哪个通常更好。这个问题已经说明了这个答案是一个前提。
-
什么?那 q only 谈论指针,这没有提到。这个问题不是关于其他人解决的最佳实践,而是关于已经超出公认最佳实践的特定案例。
【问题讨论】:
除了不需要可复制性或执行复制(可能是切片)的明显原因之外,捕获引用的好处是您可以修改它并使用throw; 继续处理。
如果您想修改对象,但在 未修改 对象上继续使用 throw; 处理异常,则必须进行复制,其中一种方法是按值捕获.
不过,我认为这很做作。捕捉const 引用,后跟一个明确的副本会更好地表达意图。
另请注意,抛出新的 C++11 nested_exception 会将先前抛出的异常对象,而不是按值接收的对象嵌套在新异常中。在这种情况下,您可能会保留自己对收到的异常的引用,除非您通过引用收到它,否则它会变得陈旧。
【讨论】: