[英]How can I catch Exception using co module on Node.js?
我在帆框架上使用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');
})
您不使用Bluebird,對嗎? 標准catch
方法沒有錯誤類型過濾 ,您需要自己做:
.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!");
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.