我正在阅读Mozilla docs for Express and Mongoose,我知道Express是不受限制的框架,没有正确的处理方法。 但是对我来说,最令人困惑的事情之一是如何处理错误以及在哪里处理错误。
我知道Express使用带有err的回调作为第一个参数,但是这些情况之间有什么区别?
1- throw new Error("BROKEN"); // Express will catch this on its own.
2- throw err;
3- next(err); // Pass errors to Express
4- return next(err)
5- app.use(function(req, res, next) { next(createError(404)) });
6- try {throw new Error("BROKEN")}; catch (err) { next(err) };
7- if (req.xhr) { res.status(500).send({ error: 'Something failed!' }) } else { next(err) }
8- res.render('error', { error: err })
9- Promise.resolve().then(function () { throw new Error("BROKEN") }).catch(next); // Errors will be passed to Express.
10- return handleError(err)
如您所见,“ err”的处理方式很多,无论是抛出,next(err),console.log(err),return next(err),res.render(),.... etc