如何使用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!"); } });