1. Koa中自带的错误处理npm
koa中,经过ctx.throw( 状态码 )来抛出异常, 也能够携带本身想提示错误信息 json
//这里咱们限制输入的id不能为负数,不然就抛出错误 usersRouter.get('/:id', (ctx) => { if(ctx.params.id * 1 < 0 ) { ctx.throw(404, '这个用户过小了, 找不到') } ctx.body = db[ctx.params.id * 1] })
图1 koa自带错误处理结果app
从上图咱们能够看出, 返回的状态码为404, 错误处理信息也显示了。可是这不是咱们想要的, 在Restful API的规定中, 咱们尽可能使用json格式返回信息koa
因此咱们能够本身写一个中间件, 放在执行顺序的最前面, 来对后面执行的代码进行错误处理async
//错误处理中间件 app.use(async (ctx, next) => { try { await next() } catch (error) { ctx.status = error.status || error.statusCode ctx.body = { message: error.message } } })
能够看到, 错误信息就以Json的格式显示出来了ui
2. 使用中间件koa-json-error来处理错误信息spa
1. 安装koa-json-errorcode
npm i koa-json-error --save中间件
2. 使用 blog
const error = require('koa-json-error')
app.use(error())
图2 用koa-json-errorr处理错误信息
能够看出, koa-json-error返回的结果都是json格式, 并且信息很是全。可是有个stack字段很是长, 在生产阶段咱们是不须要返回的。因此, 咱们须要在
生产环境下将它隐藏