【发布时间】:2013-08-26 11:05:02
【问题描述】:
我见过许多根本不需要的异常处理机制。很多时候,使用简单的if 语句可以以更简洁的方式解决问题。
例如:
- 输入无效
- 除以零
- 类型错误
- 容器范围检查
- 空指针
- 未初始化的数据
...等等。
有人可以提供一个例子来说明处理异常的更好方法吗?
【问题讨论】:
-
内存分配失败。
-
@avakar
bad_alloc已经是一个例外,我们别无选择,只能尝试抓住它。我说的是用户定义的代码——什么时候是必要的? -
其中大多数通常不会在 C++ 中给出异常。除以零、空指针和未初始化的数据会给出未定义的行为,类型检查(几乎总是)是静态的,标准容器让您可以在检查访问和未检查访问之间进行选择。这只留下“无效输入”,如何处理完全取决于您。
-
例如,如果我们检测到我们的电源、传感器或执行器有问题。任何可能导致我们系统的未定义行为。
-
简单的答案是“本地无法处理错误时”;完整的答案会占用一本书的一两章。
标签: c++ exception exception-handling