6. Koa中的錯誤處理


1.  Koa中自帶的錯誤處理

  koa中,通過ctx.throw( 狀態碼 )來拋出異常, 也可以攜帶自己想提示錯誤信息 

//這里我們限制輸入的id不能為負數,否則就拋出錯誤
usersRouter.get('/:id', (ctx) => {
  if(ctx.params.id * 1 < 0 ) {
    ctx.throw(404, '這個用戶太小了, 找不到')
  }
  ctx.body = db[ctx.params.id * 1]
})

  

 

           圖1  koa自帶錯誤處理結果

  從上圖我們可以看出, 返回的狀態碼為404, 錯誤處理信息也顯示了。但是這不是我們想要的, 在Restful API的規定中, 我們盡量使用json格式返回信息

  所以我們可以自己寫一個中間件, 放在執行順序的最前面, 來對后面執行的代碼進行錯誤處理

//錯誤處理中間件
app.use(async (ctx, next) => {
  try {
    await next()
  } catch (error) {
    ctx.status = error.status || error.statusCode
    ctx.body = {
      message: error.message
    }
  }
})

 

 

   可以看到, 錯誤信息就以Json的格式顯示出來了

 

2. 使用中間件koa-json-error來處理錯誤信息

 1. 安裝koa-json-error

  npm i koa-json-error --save

 2. 使用 

const error = require('koa-json-error')
app.use(error())

 

 

               圖2 用koa-json-errorr處理錯誤信息

    可以看出, koa-json-error返回的結果都是json格式, 而且信息非常全。但是有個stack字段非常長, 在生產階段我們是不需要返回的。所以, 我們需要在

  生產環境下將它隱藏


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM