这个问题已经在这里有了答案:




已关闭8年。






我总是按值(value)捕捉异常。例如

try{
...
}
catch(CustomException e){
...
}

但是我遇到了一些带有catch(CustomException &e)的代码。这是a)很好b)错误c)是灰色区域吗?

最佳答案

C++中的异常(exception)情况的标准做法是...



面对继承层次结构,按值(value)捕获是有问题的。对于您的示例,假设还有另一种MyException类型,它从CustomException继承并覆盖诸如错误代码之类的项。如果抛出了MyException类型,则catch块将导致将其转换为CustomException实例,这将导致错误代码更改。

10-05 18:15