标签:开头 客户端 访问 cat comment doc 事件 指定 sign
不像 express 中在末尾处注册一个声明为 app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.status = err.status || 500;
ctx.body = err.message;
ctx.app.emit("error", err, ctx);
}
}); 这样程序中任何报错都会收敛到此处。此时可以方便地将错误打印到页面,开发时非常便捷。 + ctx.app.emit(‘error‘, err, ctx); koa 也建议通过 app 来派发错误,然后通过监听 app 上的 app.on("error", (err, ctx) => {
/* 错误的集中处理:
* log 出来
* 写入日志
* 写入数据库
* ...
*/
}); 一个错误捕获并打印到页面的示例: const Koa = require("koa");
const app = new Koa();
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
const status = err.status || 500;
ctx.status = status;
ctx.type = "html";
ctx.body = `
<b>${status}</b> ${err}
`;
// emmit
ctx.app.emit("error", err, ctx);
}
});
app.use(ctx => {
const a = "hello";
a = "hello world!"; // TypeError: Assignment to constant variable.
ctx.body = a;
});
app.on("error", (err, ctx) => {
console.error("Ooops..\n", err);
});
app.listen(3000); 通过
|
标签:开头 客户端 访问 cat comment doc 事件 指定 sign
原文地址:https://www.cnblogs.com/Wayou/p/error_handling_in_koajs.html