2016-03-24 65 views
0

首先,我將簡要介紹我的代碼快速失敗設計模式

配置文件存在,其中包含ID列表。在for循環中,一次只讀取一個ID,並創建一個JSON結構列表。如果一切順利,沒有任何異常(例如整個數據不存在),它們將被推送到數據庫中。

來我的問題...對於每個ID,有一堆正在執行的業務規則。我已經編寫了這樣一種方式,即使任何期望的數據丟失或業務規則在任何時間點都失敗了,我也不會將數據插入到數據庫中。該ID的處理在那裏停止,將錯誤消息寫入日誌文件,然後繼續處理下一個ID。這可以定義爲一個失敗快速設計模式是我的問題。

+3

我寧願不說。如果刪除快速檢查,系統仍然可以正常工作,雖然速度較慢,但​​通常會保留快速失敗。如果您的數據庫具有與您在應用程序中檢查的約束相同的約束,那麼您的案例可能會被視爲快速失敗,否則將失敗。 – gudok

回答

0

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

由於通常的答案是「這取決於」的情況。這取決於你認爲失敗的原因。

假設一個空配置文件是一個你想知道的錯誤條件。 「快速失敗」的方法可能是在檢測到文件爲空時立即拋出異常,從而在故障點停止操作。替代方案可能是繼續進行處理,並最終不寫入數據到數據庫中。此時你有一個錯誤,那就是數據庫中沒有數據。這是爲什麼?數據庫插入代碼是否失敗?數據庫本身有問題嗎?文件處理失敗了嗎?數據是否損壞?您現在正在尋找錯誤追蹤錯誤,並且您有很多可能性。

用於處理每個ID使用一些業務規則。如果要求所有ID都是有效的,那麼在發現無效ID時中止處理將是「快速失敗」方法。但是,在您的示例中,您似乎只是忽略無效數據,並且只將有效數據寫入數據庫。這不是以任何方式失敗,而是你正在決定如何處理無效數據,而你只是忽略它們。所以不,你在這個設計中沒有失敗。

「快速失敗」的目的是爲了避免進入正在運行但無效的狀態而在引發故障的確切原因的確切故障點處中止程序。