了解NodeJ,ExpressJ和Mongoose中的错误处理

时间:2018-07-26 07:19:11

标签: node.js mongodb express mongoose error-handling

我正在阅读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

0 个答案:

没有答案