不像 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