c++ - 是否应该捕获异常

标签 c++ exception

毫无疑问,异常是有用的,因为它们向程序员展示了他在哪里错误地使用了函数,或者环境中发生了什么不好的事情,但是否真的需要捕获它们?

未捕获的异常正在终止程序,但您仍然可以看到问题出在哪里。在设计良好的库中,每个“意外”情况实际上都有解决方法。例如使用 map::find 而不是 map::at,在使用前检查你的 int 变量是否小于 vector::size索引运算符。

为什么有人需要这样做(不包括使用强制执行它的库的人)?基本上,如果您正在为给定的异常编写处理程序,您也可以编写代码来防止它发生。

最佳答案

并非所有异常都是致命的。它们可能是不寻常的,因此是“异常”,但可以实现调用堆栈中更高的点以重试或继续。通过这种方式,异常被用来展开堆栈和一系列嵌套的函数或方法调用到程序中实际可以处理异常原因的点——即使只是为了清理一些资源,记录错误,并像以前一样继续。

关于c++ - 是否应该捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21151002/

相关文章:

java - 自定义异常类每次都显示 Unreachable catch block

c++ - 为什么没有像 pthread_mutex_t & std::mutex 那样的 std::等价于 pthread_spinlock_t?

java - 异常(org.openqa.selenium.NoSuchWindowException): using Selenium WebDriver with Java in Internet Explorer

c++访问共享库的数组数据

c++ - VC++ 异常处理 - 应用程序无论如何都会崩溃

java - 从 Java 程序运行外部可执行文件

c# - MongoDB C# 身份验证异常

java - 正确的辅助方法异常抛出

c++ - 从 C++ 中的默认浏览器读取 cookie

c++ - MFC:已添加资源,但资源 ID 仍有未声明的标识符