c++ - 在 C++ 命令行应用程序中,我应该如何在顶层捕获异常?

标签 c++ exception

我正在用 C++ 编写命令行应用程序。如果发生未处理的异常,我不希望应用程序严重崩溃,而是尽可能地清理并打印错误消息。

我应该如何在顶层捕获异常以避免程序崩溃?我应该捕获 std::exception... 还是其他东西?

最佳答案

您可以执行的清理质量取决于所抛出的异常。

例如,您自己引发的异常(可能派生自 std::exception;我们称它为 fooexception)可以得到非常优雅的处理。

所以你真的想要一个在这些线上的捕捉点

try {
    /*whatever*/

} catch (fooexception& fe){
    /*ToDo - handle my exception*/
} catch (std::exception& e){
    /*ToDo - handle this generically*/
} catch (...){
    /*Hum. That's bad. Let's do my best*/
}

在您有空的时候扩展它。请记住,在某种意义上,多个 catch block 的行为类似于 if else block :始终先处理特定异常。

关于c++ - 在 C++ 命令行应用程序中,我应该如何在顶层捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37072267/

相关文章:

c++ - makefile:未找到体系结构的符号

c++ - ‘operator->()’ 的结果产生非指针结果

Java处理无效请求映射url包括解码

python - 抓取 PyQt 中的任何异常

python - 如何捕获尚未完全导入的模块的异常?

java - 尝试调用抛出异常的方法时,增强的 for 循环不会被执行

c++ - 解码抛出的 C++ 异常的参数 (0xE06D7363)

c++ - glGenBuffers 没有定义?

c++ - 未调用模板成员的重载构造函数

c# - 修复跨线程异常