捕获自定义错误在Bluebird中不起作用

彼得拉伦

我试图抛出然后在Bluebird Promise链中捕获自定义错误,但是我无法捕获到自定义错误。例如:

function login(req, res, next) {
  function LoginError() {}

  return User.where('id', req.body.userId).fetch()
    .then(function (location) {
      if (req.body.password !== location.get('password')) {
        throw new LoginError();
      }

      // returns a promise
      return Subscription.where('userId', location.get('userId')).fetch();
    })
    .then(function (subscription) {
      return res.send(JSON.stringify(subscription));
    })
    .catch(LoginError, function (err) {
      return res.send('Login error');
    })
    .catch(function (err) {
      res.send('Other error: ' + JSON.stringify(err));
    });
}

当密码不匹配并抛出LoginError该错误时,错误将捕获在第二个catch块中,而不是的catch块中LoginError我究竟做错了什么?

我正在使用Express.js,Bluebird和Bookshelf / Knex,其中User有一个Bookshelf模型。

贝吉

蓝鸟catch通过它们的继承将错误构造函数与a中谓词函数区分开来

对于要视为要过滤的错误类型的参数,需要使构造函数的.prototype属性为instanceof Error

可以像下面这样最小化地创建这样的构造函数:

function MyCustomError() {}
MyCustomError.prototype = Object.create(Error.prototype);

您将需要为自己做同样的事情LoginError

或者,如果您使用的是ES6,则点击class LoginError extends Error {}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

欧芹自定义错误消息不起作用

来自分类Dev

自定义错误重定向不起作用

来自分类Dev

$(this)在.each中的自定义函数中不起作用

来自分类Dev

异步自定义验证器不起作用并在Angular 8中显示错误消息

来自分类Dev

为什么自定义错误页面在我的Nginx配置中不起作用?

来自分类Dev

自定义错误页面在 Laravel 5.3 中不起作用

来自分类Dev

UICollectionView在自定义键盘扩展中不起作用

来自分类Dev

自定义字体在Heroku中不起作用

来自分类Dev

自定义UitableView在Xcode中不起作用

来自分类Dev

自定义字体在Android中不起作用

来自分类Dev

FindResource在自定义控件DLL中不起作用

来自分类Dev

Android:样式中的自定义颜色不起作用

来自分类Dev

JSTL forEach在自定义标记中不起作用

来自分类Dev

Yii自定义路由在Nginx中不起作用

来自分类Dev

自定义路由在Codeigniter 3.0.2中不起作用

来自分类Dev

UIScreenEdgePanGestureRecognizer在自定义键盘扩展中不起作用

来自分类Dev

自定义字体在Swift / Xcode中不起作用

来自分类Dev

自定义模板在WordPress中不起作用

来自分类Dev

swiftui:自定义按钮在ListView中不起作用

来自分类Dev

addEventListener在自定义元素中不起作用

来自分类Dev

自定义UICollectionViewCell类中的按钮不起作用

来自分类Dev

Xamarin Forms中的自定义控件不起作用

来自分类Dev

自定义背景资源在android中不起作用

来自分类Dev

setInterval中的自定义函数不起作用

来自分类Dev

FindResource在自定义控件DLL中不起作用

来自分类Dev

JSTL forEach在自定义标记中不起作用

来自分类Dev

调度自定义事件在haxe中不起作用

来自分类Dev

自定义视图在Android Lollipop中不起作用

来自分类Dev

Drupal中的自定义元标记不起作用

Related 相关文章

  1. 1

    欧芹自定义错误消息不起作用

  2. 2

    自定义错误重定向不起作用

  3. 3

    $(this)在.each中的自定义函数中不起作用

  4. 4

    异步自定义验证器不起作用并在Angular 8中显示错误消息

  5. 5

    为什么自定义错误页面在我的Nginx配置中不起作用?

  6. 6

    自定义错误页面在 Laravel 5.3 中不起作用

  7. 7

    UICollectionView在自定义键盘扩展中不起作用

  8. 8

    自定义字体在Heroku中不起作用

  9. 9

    自定义UitableView在Xcode中不起作用

  10. 10

    自定义字体在Android中不起作用

  11. 11

    FindResource在自定义控件DLL中不起作用

  12. 12

    Android:样式中的自定义颜色不起作用

  13. 13

    JSTL forEach在自定义标记中不起作用

  14. 14

    Yii自定义路由在Nginx中不起作用

  15. 15

    自定义路由在Codeigniter 3.0.2中不起作用

  16. 16

    UIScreenEdgePanGestureRecognizer在自定义键盘扩展中不起作用

  17. 17

    自定义字体在Swift / Xcode中不起作用

  18. 18

    自定义模板在WordPress中不起作用

  19. 19

    swiftui:自定义按钮在ListView中不起作用

  20. 20

    addEventListener在自定义元素中不起作用

  21. 21

    自定义UICollectionViewCell类中的按钮不起作用

  22. 22

    Xamarin Forms中的自定义控件不起作用

  23. 23

    自定义背景资源在android中不起作用

  24. 24

    setInterval中的自定义函数不起作用

  25. 25

    FindResource在自定义控件DLL中不起作用

  26. 26

    JSTL forEach在自定义标记中不起作用

  27. 27

    调度自定义事件在haxe中不起作用

  28. 28

    自定义视图在Android Lollipop中不起作用

  29. 29

    Drupal中的自定义元标记不起作用

热门标签

归档