Blubird catch中的自定义错误扩展类无法正常运行

时间:2018-10-04 21:02:21

标签: node.js ecmascript-6 bluebird

我正在使用ECMAScript 6NodeJS 8.12Bluebird 3.5.2

我已经定义了一个自定义错误类:

class CustomError extends Error {
    constructor(message, someParameter) {
        super(message);
        this.name = 'CustomError';
        this.someParameter = someParameter;
    }
}

我的诺言链看起来像这样:

doSomething()
    .catch(CustomError, error => { ... })
    .then(result => { ... })
    .catch(error => { LOGGER.error(`something went terribly wrong: ${error}`); }

doSomething()中使用CustomError拒绝后,如下所示:
new CustomError(error.message, parameterValue),错误消息是:

something went terribly wrong: TypeError: Class constructor CustomError cannot be invoked without 'new'

我将其精确定位到catch(CustomError, error =>语句,为了不与TypeError崩溃,需要使用catch(new CustomError, error =>

即使在此之后,CustomError捕获也不会执行。

我的问题是,为什么会这样?
是Bluebird的限制吗?

最后,我见过this question,但不适用于我的情况,因为我没有使用Babel,也没有this question,这表明我的方法应该可行(答案为ES6情况) )。

0 个答案:

没有答案