我有一段时间没有做过 C++,而且我的记忆很模糊,到目前为止我也没有找到明确的答案。我不是在谈论重新抛出捕获的异常,而是捕获一个异常并抛出不同的类型,例如:
std::unordered_map<int, int> foo;
...
int getFoo(int id)
{
try {
return foo.at(id);
}
catch (std::out_of_range& e)
{
throw MyMoreDescriptiveExceptionType();
}
}