【发布时间】:2021-04-17 21:24:54
【问题描述】:
如果我知道代码中没有程序员定义的异常,并且只想捕获标准库抛出的异常,那么只写catch (std::exception& e)就足够了,或者我仍然需要在它之后写catch (...) ?
int main()
{
try
{//something
}
catch (std::exception& e) { /*something*/}
catch (...) {/*something*/} //unnecessary?
}
所以基本上这是一个问题,我可以确定来自std 的所有throw 方法和函数都是从std::exception 派生的异常吗?
【问题讨论】:
-
很确定所有 C++ 库异常都源自
std::exception但是,谁知道呢。 Java 比 C++ 做得更好的一件事是强大的类型检查和执行。如果未能捕获异常导致格式错误的代码和编译器诊断,那不是很好吗? -
@scohe001 不,因为我知道区别,问题基本上是我可以确定所有从 std 抛出的异常都是从 std::exception 传递的异常
标签: c++ c++11 exception try-catch