zoukankan      html  css  js  c++  java
  • 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字段非常长, 在生产阶段我们是不需要返回的。所以, 我们需要在

      生产环境下将它隐藏

  • 相关阅读:
    python基础十一之装饰器进阶
    python基础十之装饰器
    python基础九之函数
    python基础八之文件操作
    python基础七之copy
    python基础七之集合
    python基础数据类型汇总
    python基础六之编码
    synchronized关键字的内存语义
    对于this和当前线程的一些理解
  • 原文地址:https://www.cnblogs.com/zhanghaoblog/p/11707422.html
Copyright © 2011-2022 走看看