如何在Node.js上使用co模块捕获异常?

时间:2016-06-14 03:25:32

标签: javascript node.js sails.js bluebird co

我正在使用sa模块上的co模块进行编码。

我想捕获InvalidError,但错误日志显示为'undefined'。

如何修复此代码?

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

2 个答案:

答案 0 :(得分:1)

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_order_process,menu); this.mMenu=menu; RelativeLayout v=(RelativeLayout)menu.findItem(R.id.item_samplebadge).getActionView(); Button count1=(Button)v.findViewById(R.id.counter); int cartsize=aController.getProductsArrayListSize(); count1.setText(String.valueOf(cartsize)); count1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { budge_click(); } }); } 方法只接受一个参数:catch。尝试:

err

答案 1 :(得分:1)

你不是在使用蓝鸟,是吗? standard catch method没有error type filtering,您需要自己执行此操作:

"^([0-9]{0,5})((\.|,)[0-9]{0,2})?$"