考虑以下代码片段
try {
goesWrong();
}
catch (const std::bad_alloc &e)
{
std::cout << "Catching bad_alloc: " << e.what() << std::endl;
}
catch (const std::exception &e)
{
std::cout << "Catching exception: " << e.what() << std::endl;
}
为什么我们需要捕获很多个别异常。最后的 std::exception
足以捕获所有异常,不是吗?为什么当 std::exception
无论如何都要捕获它时,额外的 4 行代码来显式捕获 std::bad_alloc
?
最佳答案
Why do we need to catch a lot of individual exceptions.
一般来说,因为根据捕获的异常类型允许不同的行为。
在这种情况下,有必要这样做,因为这种可能性没有被利用。
例如,考虑在内存中分配大型缓存的情况。在这种情况下,当捕获 std::bad_alloc
时,您可能会释放缓存并重试,而这种方法在其他异常情况下就没有用了。
关于c++ - 为什么程序员要同时使用 std::bad_alloc 和 std::exception。仅 std::exception 是不够的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52869774/