javascript - Bluebird.js 自定义错误捕获功能,不适用于第一个 promise ?

标签 javascript error-handling promise bluebird

我正在尝试使用 Bluebird.js 的自定义错误处理程序。

在下面的示例中调用了包罗万象的处理程序,而不是 MyCustomError 处理程序,但是当我将拒绝移动到 then 函数(并解决了 firstPromise...)时,MyCustomError 处理程序叫做。 这是为什么?有什么问题吗?谢谢。

var Promise = require('bluebird'),
debug = require('debug')('main');

firstPromise()
    .then(function (value) {
      debug(value);
    })
    .catch(MyCustomError, function (err) {
      debug('from MyCustomError catch: ' + err.message);
    })
    .catch(function (err) {
      debug('From catch all: ' + err.message);
    });

/*
 * Promise returning function.
 * */
function firstPromise() {
  return new Promise(function (resolve, reject) {
    reject(new MyCustomError('error from firstPromise'));
  });
}
/*
 *  Custom Error
 * */
function MyCustomError(message) {
  this.message = message;
  this.name = "MyCustomError";
  Error.captureStackTrace(this, MyCustomError);
}
MyCustomError.prototype = Object.create(Error.prototype);
MyCustomError.prototype.constructor = MyCustomError;

最佳答案

在任何其他事情之前声明错误类,它将起作用(原型(prototype)分配不会被提升)

关于javascript - Bluebird.js 自定义错误捕获功能,不适用于第一个 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24756903/

相关文章:

mysql - Node.js promise 和错误处理。这不能做得更干净吗?

javascript - 如何在停靠项目中水平显示元素并正确隐藏树条目。 Extjs

javascript - 强制在同一域的同一窗口中打开链接

objective-c - 处理 Objective C 客户端代码中的错误的实践

c# - 错误消息的中心页面

typescript - 为什么在指定类型后我得到 "UnhandledPromiseRejectionWarning: Error: Undefined type error. Make sure are providing an explicit type"?

javascript - D3.js 饼图动态更新转换未按预期工作

javascript - 如何使用 javascript 或 jquery 检测 IE7 并将类添加到 div

perl - 如何获取草莓perl中最后执行的命令的值

javascript - Promise Resolve 返回 2 个数组,其中一个未定义