我意识到为什么(通常)最好通过引用而不是通过指针或值来捕获异常,并且我知道如果程序员使用const
变量,编译器通常可以进行一些优化与非const
变量相比。 This Stack Overflow question阐明了这个问题。
但是,这个问题没有提到的是,是否有任何可能的性能优化可以通过const
引用而不仅仅通过引用来捕获异常,例如,使用
try
{
...
}
catch (const std::exception& e)
{
...
}
与
相对try
{
...
}
catch (std::exception& e)
{
...
}
我知道如果你通过非const
引用捕获异常,你可以做一些事情,例如修改它并重新抛出它,或者将它传递给一个非{{{的函数。 1}}引用作为参数。我也理解在适当的情况下使用const
变量通常会使代码更具可读性。但是,编译器可以执行的任何可能的优化会使使用const
引用异常本身“更好”或更快吗?或者如果我通过非const
引用捕获了所有异常,代码通常会完全相同吗?