我想更好地瞭解什麼是故障快速和故障安全。故障快速和故障安全異常處理原則是否不兼容?
乍一看,我認爲快速失敗意味着我們希望在發生意外事件時使系統明顯失效。 我的意思是,如果工廠無法創建對象的實例,對於快速失敗原則,我們實際上不希望工廠返回null或空對象或部分初始化的對象,而這些對象偶然可能會應用程序正確使用 - >大多數情況下,我們會有意想不到的行爲,或者在另一個級別引發意外的異常,這些異常不會讓我們知道真正的問題在工廠。 這是什麼原理的意思?
故障安全原理對我來說很難理解。 Java中最常見的例子是集合,它們的迭代器和併發訪問。 據說一個允許在迭代列表的同時修改列表的集合/迭代器被稱爲fail-safe。通常通過最終迭代初始列表的副本來完成。 但是在這個例子中,我並不真正瞭解系統在哪裏出現故障......因此,雖然它是無故障的......故障在哪裏?我們只是遍歷一個拷貝,因此,根據我們的需要...... 我沒有看到任何匹配故障安全的維基定義...
因此,在這樣的類似文章: http://www.certpal.com/blogs/2009/09/iterators-fail-fast-vs-fail-safe/ 他們對面快速失敗的故障安全...我只是不抓就是我們所說的故障安全這個迭代過副本...
我發現這裏的另一個爲例: http://tutorials.jenkov.com/java-exception-handling/fail-safe-exception-handling.html 似乎多了很多與故障安全原則的初始定義有關。 我認爲失效保險是當系統失敗時,我們必須確保失敗處理程序不會失敗,或者如果確實如此,請確保處理程序失敗時不會隱藏真正的初始問題。在給定的示例中,處理程序就在最初的失敗代碼附近,但情況並非總是如此。故障安全的手段對我來說更是這樣,我們正確處理可能發生的是,在故障處理程序或類似的東西...
因此對我來說這2條原則似乎沒有不兼容的錯誤。 你覺得呢? 系統不能快速安全失靈&安全嗎?
感謝您的回答 – 2010-12-03 13:00:08