KoaJS 错误处理

  • 定义和使用

    错误处理在构建 web 应用程序中扮演着重要的角色。Koa 也为此使用中间件。
  • 示例

    在 Koa 中,您添加了一个中间件,它确实尝试将 {yield next} 作为第一个中间件之一。如果在下游遇到任何错误,我们将返回到关联的 catch 子句并在这里处理错误。例如-
    var koa = require('koa');
    var app = new koa();
    
    //错误处理中间件
    app.use(function *(next) {
        try {
            yield next;
        } catch (err) {
            this.status = err.status || 500;
            this.body = err.message;
            this.app.emit('error', err, this);
        }
    });
    
    //在下一个中间件中创建错误
    //设置错误消息和状态代码,并使用上下文对象抛出它
    
    app.use(function *(next) {
        //这将设置状态和消息
        this.throw('Error Message', 500);
    });
    
    app.listen(3001);
    
    我们故意在上面的代码中创建了一个错误,并正在处理第一个中间件的catch块中的错误。然后将其发送到我们的控制台,并作为响应发送到我们的客户端。以下是触发此错误时收到的错误消息。
    InternalServerError: Error Message
    at Object.module.exports.throw 
        (/home/ayushgp/learning/koa.js/node_modules/koa/lib/context.js:91:23)
    at Object.<anonymous> (/home/ayushgp/learning/koa.js/error.js:18:13)
    at next (native)
    at onFulfilled (/home/ayushgp/learning/koa.js/node_modules/co/index.js:65:19)
    at /home/ayushgp/learning/koa.js/node_modules/co/index.js:54:5
    at Object.co (/home/ayushgp/learning/koa.js/node_modules/co/index.js:50:10)
    at Object.toPromise (/home/ayushgp/learning/koa.js/node_modules/co/index.js:118:63)
    at next (/home/ayushgp/learning/koa.js/node_modules/co/index.js:99:29)
    at onFulfilled (/home/ayushgp/learning/koa.js/node_modules/co/index.js:69:7)
    at /home/ayushgp/learning/koa.js/node_modules/co/index.js:54:5