error的類型
nodejs 的error 一般分為四種類型:
1、標准的 JavaScript 錯誤,例如 EvalError、SyntaxError、RangeError、ReferenceError、TypeError 或 URIErro。
2、由底層操作系觸發的系統錯誤,例如試圖打開不存在的文件、或試圖使用已關閉的 socket 發送數據。
3、由應用程序代碼觸發的用戶自定義的錯誤。
4、AssertionError 錯誤,當 Node.js 檢測到不應該發生的異常邏輯時觸發。這類錯誤通常來自 assert 模塊。
error的捕獲
nodejs有3種當應用程序發生錯誤時的捕獲方式
1、try…catch
一般用於處理代碼中可能出現的錯誤信息,當錯誤發生時, JavaScript 會停止執行,並生成一個錯誤信息。使用 throw 語句 來創建自定義消息(拋出異常)。如果你將 throw 和 try 、 catch一起使用,就可以控制程序輸出的錯誤信息。若異常用try…catch 處理,則nodejs進程會立即退出。
但需要注意的是,如果想在異步方法的回調函數里面拋出錯誤,不要放在 try … catch 代碼塊中,因為代碼執行順序的原因, 回調函數還沒有執行, try…catch 代碼已經執行完畢並退出。
2、回調函數中的error參數
大多數 Node.js 核心 API 所提供的異步方法都遵從錯誤信息優先的回調模式慣例,這種模式有時也稱為 Node.js 式回調。在這種模式中,一個回調函數首先被作為參數傳給異步方法。當該方法完成操作或產生錯誤時,它會調用回調函數,並將可能存在的 Error 對象作為第一個參數傳給回調函數。如果沒有錯誤產生,那么第一個參數為 null 。
3、process.on(‘uncaughtException’)事件監聽
當系統發生異常,且沒有被try…catch捕獲時;會出發‘uncaughtException’事件;該方法適用於全局的異常捕獲,來避免nodejs進程的崩潰,但該方法僅僅用於異常捕獲,無法做成相應的異常處理,因為無法定位到發生異常的上下文。
結語:異常錯誤是程序中無法避免的,但重要的是我們如何在發生錯誤的時候如何處理錯誤,來保證程序的順利執行。