簡體   English   中英

如何在Node.js上使用co模塊捕獲異常?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM