不要將處理“通常情況”的代碼和處理異常的代碼混雜在一起。盡量只編寫處理通常情況的代碼。如果通常情況的處理代碼失效,進程應(yīng)該報告錯誤,并盡可能快地崩潰。不要試圖修復(fù)錯誤以繼續(xù)運行進程。錯誤應(yīng)該在另外一個進程中進行處理(參看 5.5 節(jié)內(nèi)容)
將錯誤恢復(fù)代碼和通常情況處理代碼予以清晰的隔離,可以極大簡化系統(tǒng)設(shè)計。
軟硬件出錯時生成的錯誤日志將用于后續(xù)階段對錯誤的診斷和糾正。應(yīng)該永久地保留該進程中的有益信息。
系統(tǒng)設(shè)計的一個基本要素是確定系統(tǒng)中必須正確與不必正確的部分。
在傳統(tǒng)的操作系統(tǒng)設(shè)計中,系統(tǒng)內(nèi)核被假設(shè)為(而且被認為必須)是正確的,然而,用戶應(yīng)用程序沒有必要都完全正確。如果用戶應(yīng)用程序失敗,那么應(yīng)該只會涉及到相應(yīng)應(yīng)用,不應(yīng)該影響到系統(tǒng)的總體完整性。
在系統(tǒng)設(shè)計的第一階段中,必須要搞清楚必須正確的部分。這一部分被稱之為錯誤內(nèi)核(error kernel)。通常,錯誤內(nèi)核都有一些實時的內(nèi)存駐留數(shù)據(jù)庫,用來保存硬件狀態(tài)。