扫码一下
查看教程更方便
错误处理在构建 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)
现在任何发送到服务器的请求都会触发这个错误。