【发布时间】:2020-07-30 15:10:53
【问题描述】:
#include <exception>
struct FOO
{
~FOO() try
{
throw std::exception();
}
catch (...)
{
return; // Shall prevent the exception from being rethrown?
}
};
在 Visual Studio 中构建此代码会触发 C4297 警告(假定函数不会引发异常,但会引发异常)。
到达析构函数上函数try块的catch子句的末尾也会自动重新抛出当前异常,就像通过throw;,但允许返回语句。 quoted from cppreference.com;
我能正确解释这句话吗?从 catch 语句中返回是否应该防止异常被重新抛出?
我记录了bug,但他们将其关闭为duplicate。另一个错误没有return statement,但我认为它会有所不同。
【问题讨论】:
标签: c++ exception language-lawyer