Koa框架中如何进行错误处理机制分析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计773个文字,预计阅读时间需要4分钟。
Koa 与 Express 在中间件注册方式上的区别:Express 在末尾注册中间件时,通常使用 `(err, req, res, next)` 形式的参数,而 Koa 则相反,推荐在开头注册中间件。例如,Koa 中可以这样注册:javascriptapp.use(async (ctx, next)=> { try { await next(); } catch (err) { ctx.status=err.status || 500; ctx.body=err.message; }});
不像 express 中在末尾处注册一个声明为 (err, req, res, next) 中间件的方式,koa 刚好相反,在开头进行注册。
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 上的 error 事件对这些错误做进一步的统一处理和集中管理。
本文共计773个文字,预计阅读时间需要4分钟。
Koa 与 Express 在中间件注册方式上的区别:Express 在末尾注册中间件时,通常使用 `(err, req, res, next)` 形式的参数,而 Koa 则相反,推荐在开头注册中间件。例如,Koa 中可以这样注册:javascriptapp.use(async (ctx, next)=> { try { await next(); } catch (err) { ctx.status=err.status || 500; ctx.body=err.message; }});
不像 express 中在末尾处注册一个声明为 (err, req, res, next) 中间件的方式,koa 刚好相反,在开头进行注册。
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 上的 error 事件对这些错误做进一步的统一处理和集中管理。

