Koa统一错误异常处理

https://blog.csdn.net/qq_37261367/article/details/81062038

koa自带的error事件

app.on("error", (err, ctx) => {
 /* 
 你的处理
  */
});

但是遇到404这类状态码 并不会触发

为此需要手写一套方案
index.js

const koa = require('koa');
const app = new koa();

//统一错误异常处理
app.use(async (ctx, next) => {
    let status = 0;
    let fileName = "";
    try{
        await next();
        status = ctx.status;
    }catch(err){
    	console.log(err);
        status = 500;
    }
    if(status >= 400){
        switch(status){
            case 400:
            case 404:
            case 500:
                fileName = status;
                break;
            default:
                fileName = "other";
                break;
        }
    }
    ctx.response.status = status;
    console.log(fileName);
});

封装一下
/middleware/errorHandler.js

module.exports = (app) => {
    app.use(async (ctx, next) => {
        let status = 0;
        let fileName = "";
        try{
            await next();
            status = ctx.status;
        }catch(err){
            //console.log(err);
            status = 500;
        }
        if(status >= 400){
            switch(status){
                case 400:
                case 404:
                case 500:
                    fileName = status;
                    break;
                default:
                    fileName = "other";
                    break;
            }
        }
        ctx.response.status = status;
        console.log(fileName);
    });
}

index.js

const koa = require('koa');
const app = new koa();

//统一错误异常处理

const errorHandler = require('./middleware/errorHandler');
errorHandler(app);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值