您能推荐一种设计模式/方法来暴露/容忍/从系统错误中恢复,异常处理(Java,C++,Perl,PHP)吗?
一些错误需要报告。
某些错误可以在内部处理(通过重试或无关紧要(可以忽略))。
您如何构造代码以捕获它们?
但是所有错误都需要记录。
有哪些最佳实践?
为了模拟它们能够完全测试受它们影响的组件?
适用于几种现代编程语言的一般非编程语言特定问题,但将欢迎使用Java,C++,PHP和Perl进行模式,方法和哲学的示例说明。
最佳答案
我的哲学是总是尝试在发生错误的地方捕获错误。诸如全局异常处理程序之类的事情使调试过程变得困难。尽可能将错误处理保留在故障站点的本地。调试更容易,并且避免了非特定的错误报告,该报告往往会使用户感到困惑和沮丧。
就日志记录而言,这是一个实现决策。每当检测到错误情况时,我通常都会调用一些报表实用程序函数。显然,您可以更改日志记录级别,以便报告某些严重错误。同样,如果您的应用程序应退出并出现错误,请尽快执行此操作。
模拟和测试有些正交。为了完全测试您的错误处理代码,您应该能够编写导致每个错误发生的测试用例。它可能涉及设计输入或更改状态。如果错误不取决于输入或与外部系统的交互,那么您应该真正考虑这是故障情况,还是偶然触发的实现错误。
关于design-patterns - 建议设计模式/方法公开/容忍/从系统错误中恢复,异常处理(Java,C++,Perl,PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7432596/