2020年12月8日 星期二

node express async程式發生錯誤時的幾種狀況

 

當執行的async程式發生錯誤時的幾種狀況

一.以try catch 包覆整個程式

1.try catch 包覆外的程式

  無論有無錯誤發生都會被執行

  常見的Cannot set headers after they are sent to the client錯誤 就是這樣發生

2.在try區塊內發生錯誤

  會直接跳到catch區塊,try內其他往下程式碼不會被執行到

3.只要有catch區塊存在

  系統會認為你有處理 就不會主動把錯誤往外丟

4.catch區塊內 以reject回應

  以reject回應錯誤,會回到呼叫端的catch

  若呼叫端沒有catch 則會在這裡發生錯誤

5.catch區塊內 以next回應

  會跳到整個app 的錯誤處理機制上

  也就是進入使用app.use()的部份處理

  

二. 沒有try catch

1.function內

  會直接發生錯誤

2.route內

  會自動往next丟 給外部的錯誤處理

沒有留言: