c++ - 错误处理理论?

标签 c++ error-handling

大多数关于错误处理的建议都归结为一些技巧和窍门(例如,参见 this post)。这些提示很有帮助,但我认为它们并不能回答所有问题。我觉得我应该根据某种哲学来设计我的应用程序,这是一种为构建提供坚实基础的思想流派。关于错误处理的话题有这样的理论吗?

这里有几个实际问题:

  • 如何决定错误应该在本地处理还是传播到更高级别的代码?
  • 如何决定是记录错误还是将其作为错误消息显示给用户?
  • 日志记录是否应该只在应用程序代码中完成?或者可以从库代码中进行一些日志记录。
  • 如果出现异常,您应该一般在哪里捕获它们?在低级或高级代码中?
  • 你是应该通过所有层的代码争取统一的错误处理策略,还是尝试开发一个能够适应各种错误处理策略的系统(以便能够处理来自 3rd 方库的错误) .
  • 创建错误代码列表是否有意义?还是现在已经过时了?

在许多情况下,常识足以制定一个足够好的策略来处理错误情况。但是,我想知道是否有更正式/“学术”的方法?

PS:这是一个普遍的问题,但也欢迎 C++ 特定的答案(C++ 是我工作的主要编程语言)。

最佳答案

Is logging something that should only be done in application code? Or is it ok to do some logging from library code.

只是想对此发表评论。我的观点是永远不要直接在库代码中记录日志,而是在应用程序代码中提供 Hook 或回调来实现这一点,因此应用程序可以决定如何处理来自日志的输出(如果有的话)。

关于c++ - 错误处理理论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989819/

相关文章:

javascript - `new Error()` 什么时候比 `Error()` 好?

php - 使用PHP中的try catch block 进行错误处理

python - 转换字节->字符串->返回字节,并获取原始值

c++ - 构造函数基于最后一个参数的值?

c++ - 有效地检查整数的偶数/奇数

c++ - 传递给函数时变量会改变值吗?

vue.js - 使用 Axios 拦截器时防止将错误记录到控制台

c++ - 循环写入文件时遇到问题

c++ - 我什么时候使用 bad_typeid?

iphone - Objective-C : Best way to store error messages