nodejs錯誤處理

2021-09-25 07:58:03 字數 2148 閱讀 9896

1.不處理直接導致程式奔潰,這顯然不是我們想要的

2.導致請求無法被釋放,直至連線超時。使用者體驗體驗非常差,我們要做的應該是在出錯時,給使用者乙個友好的提示,並記錄下此次異常,以便排查。

node.js中常用的異常處理方式

// 每秒鐘列印一次時間,確保程式沒有奔潰

(function

loop()

,1000)}

)()// 模擬同步**塊內出現異常

letsyncerror=(

)=>

// 模擬非同步**塊內出現異常

letasyncerror=(

)=>

,100

)}

try

catch(e

)console.

log(

'異常**獲了,我可以繼續執行'

)

但是try catch方式無法處理非同步**塊內出現的異常,你可以理解為執行catch時,異常還沒有發生。

try

catch(e

)

fs.

mkdir

('/dir'

,function

(e)else

})

let events =

require

("events");

//建立乙個事件監聽物件

let emitter =

newevents.eventemitter()

;//監聽error事件

emitter.

addlistener

("error"

,function

(e))

;//觸發error事件

emitter.

emit

("error"

,new

error

('出錯啦'))

;

new

promise

((resolve, reject)

=>

catch(e)

*/})

.then((

)=>).

catch

((e)

=>

)

promise同樣無法處理非同步**塊中丟擲的異常

new

promise

((resolve, reject)

=>).

then((

)=>).

catch

((e)

=>

)

async/await是基於promise的,所以promise無法捕獲的異常,async/await同樣無法捕獲

var

sleep

=function

(time))}

;(async

function()

catch(e

)})(

)

process方式可以捕獲任何異常(不管是同步**塊中的異常還是非同步**塊中的異常)

process.on(

'uncaughtexception'

,function

(e))

;asyncerror()

syncerror

()

process方式雖然可以捕獲任何型別的異常,但是process太過笨重,除了記錄下錯誤資訊,其他地方不適合使用,domain這個也可以處理任何型別異常的模組,顯然是乙個不錯的選擇。

let domain =

require

('domain'

)let d = domain.

create()

d.on

('error'

,function

(e))

d.run

(asyncerror)

d.run

(syncerror)

MySql錯誤處理 錯誤處理的例子

有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not found 執行 rollback和產生一條錯誤...

MySql錯誤處理(三) 錯誤處理的例子

mysql錯誤處理 三 錯誤處理的例子 有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not foun...

PHP 錯誤處理

在 php 中,預設的錯誤處理很簡單。一條訊息會被傳送到瀏覽器,這條訊息帶有檔名 行號以及一條描述錯誤的訊息。在建立指令碼和 web 應用程式時,錯誤處理是乙個重要的部分。如果您的 缺少錯誤檢測編碼,那麼程式看上去很不專業,也為安全風險敞開了大門。本教程介紹了 php 中一些最為重要的錯誤檢測方法。...