Próbuję użyć niestandardowych procedur obsługi błędów w Bluebird.js.Niestandardowa funkcja wstrzymania błędów Bluebird.js nie dotyczy pierwszej obietnicy?
W przykładzie poniżej catch-all obsługi nazywa, a nie obsługi MyCustomError, ale gdy przeniósł się do odrzucenia następnie funkcji (i rozwiązany firstPromise ...), przewodnik MyCustomError nazywa. Dlaczego tak jest? coś złego? Dzięki.
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;
Bardzo czysty sposób dziedziczenia od błędu, używam to teraz :) Dzięki! –