gpt4 book ai didi

c++ - 关于 C++ vector::push_back() 异常。省略号catch有用吗?

转载 作者:行者123 更新时间:2023-11-30 01:15:56 28 4
gpt4 key购买 nike

我经常写这样的代码:

try
{
vec.push_back(0);
}
catch(const std::bad_alloc &)
{
ec=1;
}
catch(...)
{
ec=2;
}

省略号catch有用吗?您能否提供一些链接,让我可以找到我需要了解的有关 cin、vector、ifstream 等抛出的异常的所有信息?所有 C++ 的东西...类似于 The Open Group Base Specifications Issue 7 ( http://pubs.opengroup.org/onlinepubs/9699919799/ ),您可以在其中找到函数名称、参数、返回值、标志、错误代码等。

最佳答案

恕我直言,如果省略号捕获真的有用是有争议的。您至少应该捕获一个 std::exception 以匹配更广泛的情况

try {
vec.push_back(0);
}
catch(const std::bad_alloc &) {
ec=1;
}
catch(const std::exception &) {
ec=2;
// You can inspect what() for a particular reason, or even try to dynamic_cast<>
// to find out which specific exception was thrown.
}
catch(...) {
// You have no more type info here, this should be done for last resort (in the
// outermost scope) only.
ec=3;
}

我留下了关于优点/缺点的评论

关于c++ - 关于 C++ vector::push_back() 异常。省略号catch有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27609839/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com