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