NodeJS的錯誤處理讓人痛苦,在很長的一段時間里,大量的錯誤被放任不管。但是要想建立一個健壯的Node.js程序就必須正確的處理這些錯誤,而且這并不難學(xué)。如果你實在沒有耐心,那就直接繞過長篇大論跳到“總結(jié)”部分吧。
原文
這篇文章會回答NodeJS初學(xué)者的若干問題:
- 我寫的函數(shù)里什么時候該拋出異常,什么時候該傳給callback, 什么時候觸發(fā)
EventEmitter
等等。
- 我的函數(shù)對參數(shù)該做出怎樣的假設(shè)?我應(yīng)該檢查更加具體的約束么?例如參數(shù)是否非空,是否大于零,是不是看起來像個IP地址,等等等。
- 我該如何處理那些不符合預(yù)期的參數(shù)?我是應(yīng)該拋出一個異常,還是把錯誤傳遞給一個callback。
- 我該怎么在程序里區(qū)分不同的異常(比如“請求錯誤”和“服務(wù)不可用”)?
- 我怎么才能提供足夠的信息讓調(diào)用者知曉錯誤細(xì)節(jié)。
- 我該怎么處理未預(yù)料的出錯?我是應(yīng)該用?
try/catch
?,domains
?還是其它什么方式呢?
這篇文章可以劃分成互相為基礎(chǔ)的幾個部分:
- 背景:希望你所具備的知識。
- 操作失敗和程序員的失誤:介紹兩種基本的異常。
- 編寫新函數(shù)的實踐:關(guān)于怎么讓函數(shù)產(chǎn)生有用報錯的基本原則。
- 編寫新函數(shù)的具體推薦:編寫能產(chǎn)生有用報錯的、健壯的函數(shù)需要的一個檢查列表
- 例子:以
connect
函數(shù)為例的文檔和序言。
- 總結(jié):全文至此的觀點總結(jié)。
- 附錄:Error對象屬性約定:用標(biāo)準(zhǔn)方式提供一個屬性列表,以提供更多信息。
更多建議: