Следующий код отлично работает без исключения, и если в функциональной панели есть исключение, программа только что завершилась без какого-либо вывода. Я проверил исходный код Q, он ловит исключение и отклоняет его. Потратил некоторое время, но до сих пор не знаю, как правильно получить информацию об исключении.
function foo(val) {
var deferred = Q.defer();
if (val) {
deferred.resolve(val);
} else {
deferred.reject(val);
}
return deferred.promise;
}
function bar() {
var deferred = Q.defer();
foo(true)
.then(function(res) {
throw new Error('true error!');
deferred.resolve(true);
}, function(err) {
throw new Error('false error!');
deferred.reject(false);
});
return deferred.promise;
}
bar()
.then(function(res) {
console.log('true');
}, function(err) {
console.log('false');
})
.done();