因為nodejs是單線程的,所以一旦發生錯誤或異常,如果沒有及時被處理整個系統就會崩潰。錯誤異常有兩種場景的出現,一種是代碼運行中throw new error沒有被捕獲,另一種是Promise的失敗回調函數,沒有對應的reject回調函數處理,針對這兩種情況Nodejs都有默認的統一處理方式,就是給整個進程process對象監聽相應的錯誤事件。比如
1 process.on('uncaughtException',function(err){}) //監聽未捕獲的異常 2 3 process.on('unhandledRejection',function(err,promise){}) //監聽Promise沒有被捕獲的失敗函數
Note:unhandledRejection監聽的函數有兩個參數,第一個是錯誤對象,第二個是產生錯誤的promise對象,通過promise對象可以獲得更多信息。