在Express的官网上,可以找到关于异常处理的方法如下:
app.use(function(err, req, res, next) { console.error(err.stack); res.status(500).send('Something broke!'); });
遗憾的是,由于Node.js中大部分任务都是异步处理的,所以传统的try、catch是无法拦截异常的,也无法流入上述异常处理函数中。
在这篇文章中,列出了一些处理方法,但是都比较繁琐。
实际上,我们可以使用一个express-domain-middleware来解决问题:
app.use(require('express-domain-middleware'));
之后,所有未捕获的异步异常,都会流入到一开始我们设定的异常处理函数中了。