【发布时间】:2014-06-13 01:06:52
【问题描述】:
在以下代码中,$q promise 的 catch 函数捕获了一个异常:
// Fiddle - http://jsfiddle.net/EFpn8/6/
f1().then(function(data) {
console.log("success 1: "+data)
return f2();
})
.then(function(data) {console.log("success 2: "+data)})
.catch(function(data) {console.log("error: "+data)});
function f1() {
var deferred = $q.defer();
// An exception thrown here is not caught in catch
// throw "err";
deferred.resolve("done f1");
return deferred.promise;
}
function f2() {
var deferred = $q.defer();
// An exception thrown here is handled properly
throw "err";
deferred.resolve("done f2");
return deferred.promise;
}
但是,当我查看控制台日志输出时,我看到以下内容:
异常在 Angular 中被捕获,但也被浏览器的错误处理捕获。这种行为确实会在 Q 库中重现。
这是一个错误吗?我怎样才能真正用 $q 捕获异常?
【问题讨论】:
标签: javascript angularjs promise angular-promise