Koa.js 错误处理

错误处理在构建 Web 应用程序中起着重要作用。 Koa 也提供了处理错误的中间件。

在 Koa 中,我们添加了一个中间件,它使用 try{}catch(){} 语法来捕获错误。 如果我们在下游遇到任何错误,我们将返回相关的 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(3000);

我们故意在上面的代码中创建了一个错误,并在我们的第一个中间件的 catch 块中处理了这个错误。 然后将其发送到我们的控制台,并作为响应发送给我们的客户端。 以下是我们触发此错误时收到的错误消息。

InternalServerError: Error Message
      at Object.throw (/Users/jiyik/workspace/node/hello-koa/node_modules/koa/lib/context.js:97:11)
      at /Users/jiyik/workspace/node/hello-koa/app.js:20:13
      at dispatch (/Users/jiyik/workspace/node/hello-koa/node_modules/koa-compose/index.js:42:32)
      at /Users/jiyik/workspace/node/hello-koa/node_modules/koa-convert/index.js:42:43
      at Generator.next (<anonymous>)
      at onFulfilled (/Users/jiyik/workspace/node/hello-koa/node_modules/co/index.js:65:19)
      at /Users/jiyik/workspace/node/hello-koa/node_modules/co/index.js:54:5
      at new Promise (<anonymous>)
      at Object.co (/Users/jiyik/workspace/node/hello-koa/node_modules/co/index.js:50:10)
      at Object.toPromise (/Users/jiyik/workspace/node/hello-koa/node_modules/co/index.js:118:63)

现在任何发送到服务器的请求都会触发这个错误。

查看笔记

扫码一下
查看教程更方便