Day*_*mer 1 c++ reference exception
我是C++的新手.我看到了一些使用catch
块的代码示例,其中异常被值捕获.例如:
catch(SomeClass e)
Run Code Online (Sandbox Code Playgroud)
我也看到了一些引用的例子:
catch(const std:: out_of_range& e)
Run Code Online (Sandbox Code Playgroud)
我假设如果通过引用捕获异常,则应该通过const
引用.
我的问题是,当建议使用每种方式时,每种方式有哪些优点/缺点?
谢谢!
建议您通过引用捕获异常,原因有两个:
按值捕获异常将最终生成抛出的异常对象的副本(与传递参数将生成该对象的副本的方式相同).尽管异常处理可能有点慢,但仍然值得尝试避免这种低效率.
如果抛出派生类型的异常并按值捕获基类型,则将对异常进行切片,方法与将派生类型按值传递到函数中将切片该对象的方式相同.这可能导致程序中出现错误或异常行为.
希望这可以帮助!
归档时间: |
|
查看次数: |
61 次 |
最近记录: |