我正在用 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/