我知道在按值捕获异常时,会调用复制构造函数,但是按值或不通过引用捕获时有什么不好吗?如果按值捕获,可以给出一个特定的例子吗? (我的意思是除了复制构造函数执行所需的时间,但由于异常很少发生,因此并不重要)。 我听说切片问题有一些问题,但是当这可能导致损坏/问题时我无法想出。
答案 0 :(得分:3)
除了(1)对象切片的可能性(非常危险)和(2)获取值副本的开销之外,您将失去以某种方式修改异常的能力: / p>
catch (Foo ex){
ex.embellishWithMoreDetails(/*whatever*/);
throw; // rethrows the caught, not the copied exception by reference.
}
并且可以使你的程序变得笨拙。