BlueBird承诺中的特定错误捕获

时间:2017-01-20 09:02:05

标签: javascript node.js promise bluebird

我正在使用蓝鸟承诺和标准错误。问题是当我抛出这样的错误

   return new PromiseReturns(function (resolve, reject) {
        reject(new StandardError({
        status: 'Error',
        message: "Not Found",
        originalError: err,
        code: 404
       }));
    });

在此捕获中没有收到

.catch(StandardError , function(err){
 })

取而代之的是

.catch(function(err){
})

2 个答案:

答案 0 :(得分:0)

它对我有用。看看这个

var Promise = require('bluebird')
var StandardError = require("standard-error")

Promise.resolve().then(function() {
    throw new StandardError("Not Found", {code: 404})
}).catch(StandardError, function(e) {
    console.log('custom error caught');
}).catch(function(e) {
    console.log('generic caught');
})

输出:

$ custom error caught

答案 1 :(得分:0)

每次造成问题时都会创建新的PromiseReturns。我已将所有代码捆绑在一个承诺中并且有效。

例如:

       function requestFromController(body){

           return new PromiseReturns(function (resolve, reject) {
                if(body){
                   reject(new StandardError({
                        status: 'Error',
                        message: "Not Found",
                        originalError: err,
                        code: 404
                    }));
                }

                db.model.find().then(x => {
                    resolve(x);
                })
          });
   }