教程 > koa.js 中文教程 > 阅读:89

koa.js 错误处理——迹忆客-ag捕鱼王app官网

错误处理在构建 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 ()
      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 ()
      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)

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

查看笔记

扫码一下
查看教程更方便
网站地图