默認狀況下Koa會將全部錯誤信息輸出到 stderr,除非 NODE_ENV 是 "test"。爲了實現自定義錯誤處理邏輯(好比 centralized logging),您能夠添加 "error" 事件監聽器。app
app.on('error', function(err){ log.error('server error', err); });
若是錯誤發生在 請求/響應 環節,而且其不可以響應客戶端時,Contenxt 實例也會被傳遞到 error 事件監聽器的回調函數裏。socket
app.on('error', function(err, ctx){ log.error('server error', err, ctx); });
當發生錯誤但仍可以響應客戶端時(好比沒有數據寫到socket中),Koa會返回一個500錯誤(Internal Server Error)。函數
不管哪一種狀況,Koa都會生成一個應用級別的錯誤信息,以便實現日誌記錄等目的。spa
若是代碼運行過程當中發生錯誤,咱們須要把錯誤信息返回給用戶。HTTP 協定約定這時要返回500狀態碼。Koa 提供了ctx.throw()方法,用來拋出錯誤,ctx.throw(500)就是拋出500錯誤。日誌
看下面的 500error.js 文件中的代碼:code
https://www.xttblog.com/?p=1751server