您能否推荐一种设计模式/方法来暴露/容忍/恢复系统错误,异常处理(Java,C ++,Perl,PHP)?
需要报告一些错误。
某些错误可以在内部处理(通过重试或无关紧要(可以忽略)。
如何构造代码来捕获它们?
但是需要记录所有错误。
有哪些最佳做法?
为了模拟它们能够完全测试受它们影响的组件?
适用于多种现代编程语言的一般非编程语言特定问题,但欢迎Java,C ++,PHP和Perl中的模式,方法和哲学的示例说明。
答案 0 :(得分:5)
我的理念涉及总是试图捕捉错误发生的地方。像全局异常处理程序这样的事情会导致调试过程变得困难。尽可能将错误处理保留为故障站点的本地。调试更容易,它避免了非特定的错误报告,这往往会使用户感到困惑和沮丧。
在日志记录方面,这是一个实施决策。我通常有一些报告实用程序函数,每当我检测到错误条件时,我都会调用它。显然,您可以更改日志记录级别,以便报告某些严重错误。同样,如果您的应用程序应该以错误退出,请尽快执行此操作。
模拟和测试有些正交。要完全测试错误处理代码,您应该能够编写导致每个错误发生的测试用例。它可能涉及设计输入或改变状态。如果您的错误不依赖于输入或与外部系统的交互,那么您应该考虑这是一个失败条件,还是只是偶尔触发的实现错误。