推荐一种设计模式/方法来暴露/容忍/恢复系统错误,异常处理(Java,C++,Perl,PHP)

the*_*now 1 error-handling design-patterns exception-handling

你能推荐一种设计模式/方法来暴露/容忍/恢复系统错误,异常处理(Java,C++,Perl,PHP)吗?

需要报告一些错误.

一些错误可以在内部处理(通过重试或无关紧要(可以忽略)).

你如何构造代码来捕获它们?

但是需要记录所有错误.

那里有什么最佳实践?

并且为了模拟它们能够完全测试受它们影响的组件?

适用于多种现代编程语言的一般非编程语言特定问题,但欢迎Java,C++,PHP和Perl中的模式,方法和哲学的示例说明.

Gia*_*ian 5

我的哲学总是试图在发生错误的地方捕捉错误.像全局异常处理程序这样的事情会导致调试过程变得困难.尽可能将错误处理保留为故障站点的本地.调试更容易,并且它避免了非特定的错误报告,这往往会使用户感到困惑和沮丧.

在日志记录方面,这是一个实施决策.我通常有一些报告实用程序函数,每当我检测到错误条件时,我都会调用它.显然,您可以更改日志记录级别,以便报告某些严重错误.同样,如果您的应用程序应该以错误退出,请尽快执行此操作.

模拟和测试有些正交.要完全测试错误处理代码,您应该能够编写导致每个错误发生的测试用例.它可能涉及设计输入或改变状态.如果错误依赖于输入或与外部系统的交互,那么您应该考虑这是一个失败条件,还是只是偶尔触发的实现错误.