如何使用Node.js上的co模块捕获exception?

我在帆框架上使用co模块进行编码。

我想捕获InvalidError,但错误日志说'未定义'。

我怎样才能解决这个代码?

Co模块不能捕获ErrorType规范?

detail: function (req, res) { co(function *() { let errors = []; const text = req.param('text'); if (text.length <= 0) { throw new InvalidError('text is required'); } }).catch((InvalidError, err) => { sails.log.warn(err); errors.push(err.message); req.flash('errors', errors); res.redirect('/somewhere/view'); }).catch((Error, err) => { sails.log.error(err); res.serverError(err); }); } 

错误日志在这里

 warn: undefined error: undefined error: Sending empty 500 ("Server Error") response 

catch方法只需要一个参数: err 。 尝试:

 .catch(err => { sails.log.warn(err); errors.push(err.message); req.flash('errors', errors); res.redirect('/somewhere/view'); }) 

你不使用蓝鸟,是吗? 标准的catch方法没有错误types过滤 ,你需要自己去做:

 .catch(err => { if (err instanceof InvalidError) { sails.log.warn(err); errors.push(err.message); req.flash('errors', errors); res.redirect('/somewhere/view'); } else if (err instanceof Error) { sails.log.error(err); res.serverError(err); } else { console.error("You've thrown a non-error! Shame on you!"); } });