失败快速设计模式

时间:2016-03-24 08:09:14

标签: java design-patterns

首先,我将简要解释一下我的代码

存在配置文件,其中包含ID列表。在for循环中,一次读取一个ID,并创建JSON结构列表。如果一切顺利,没有任何例外(例如整个数据不存在),它们就会被推送到数据库中。

来到我的问题......对于每个ID,都有一堆正在执行的业务规则。我以这样的方式编码,即使任何预期的数据丢失,或者业务规则在任何时间点都失败,我也不会将数据插入数据库。该ID的处理在那里停止,错误消息被写入日志文件,然后继续下一个ID。这可以定义为失败快速设计模式是我的问题。

1 个答案:

答案 0 :(得分:0)

在CodeRanch上回答:http://www.coderanch.com/t/663709/java/java/Fail-Fast-Design-Pattern

通常情况下,答案是“它取决于”。这取决于你认为是失败的。

假设空配置文件是您想要了解的错误情况。 “快速失败”方法可能是在检测到文件为空后立即抛出异常,从而在故障点停止操作。替代方案可能是继续处理并最终不将数据写入数据库。此时您有一个错误,即数据库中没有数据。这是为什么?数据库插入代码是否失败?数据库本身有问题吗?文件处理失败了吗?数据是否已损坏?你现在正在寻找一个追踪错误的bug,你有很多可能性。

使用某些业务规则处理每个ID。如果要求是所有ID都有效,那么在找到无效ID时中止处理将是“快速失败”方法。但是,在您的示例中,您似乎只是忽略无效数据并仅将有效数据写入数据库。这根本不会失败,而是你决定如何处理无效数据而忽略它们。所以不,你在这个设计中没有快速失败。

“快速失败”的目的是在确切的失败点引导程序中止,以避免进入运行但无效的状态。