有没有办法捕获C ++中的所有异常?

时间:2012-02-27 02:34:40

标签: c++

  

可能重复:
  How can I catch all types of exceptions in one catch block?

在C ++中有没有办法捕获所有异常?如果是这样,那将是什么语法?

的Merci

3 个答案:

答案 0 :(得分:8)

是的,你可以通过try catch catch内部... / try { // do some stuff } catch (...) { // catch any exceptions that weren't handled and/or rethrown in the try block } 块来捕获所有未处理(而不是重新抛出)的异常:

catch

您也可以将其与其他catch (...)结合使用,但要确保它们高于{{1}},否则它们将被全部捕获(并且您应该收到编译器错误)。< / p>

答案 1 :(得分:5)

你可以捕捉到这样的所有例外

try{
    // ...
} catch (...) {
    // ...
}

然而,更有用的事情是捕获特定的异常,然后最终落入(...)

try{
    // ...
} catch (const std::exception& ex) {
    // ...
} catch (const std::string& ex) {
    // ...
} catch (...) {
    // ...
}

答案 2 :(得分:1)

不,您无法捕获所有异常,因为您无法捕获嵌套在try/catch块中的另一个处理程序已捕获的异常。