我有下面的代碼:JavaScript的catch塊與錯誤的上下文
try {
...
try {
// This is *never* called
alert('TRY');
} catch (e) {
// But this *is* called
alert('CATCH');
}
} catch (e2) {
...
}
的問題是,從內catch
塊警報被執行,但不的一個從內try
。
這是可能在所有規格或有沒有人有一個想法這裏發生了什麼?
可以從例如異步代碼運行到另一個catch塊的上下文中?
請注意,這是我放在那裏的真實代碼,內部沒有遺漏try
/catch
! 一些異步代碼可能會在進入塊之前運行。
這是從PyQt 4.9.0和Qt 4.8.0在WebKit/QtWebKit中運行的Web應用程序中取得的代碼。
好了,所以這裏的內部的try/catch(其中第一個省略號是)之前的一些更多的代碼:
DoSomething(function() {
var updatePromises = [];
var p;
for (...) {
p = new Promise();
updatePromises.push(p);
// Run asynchronous code to fulfill promise.
// Calls are chained using an array and a "setTimeout()" mechanism.
tasks.chain(function (promise) { ... }, this, p);
}
(function() {
...
}).future().apply(this, updatePromises);
}.bind(this));
你能顯示更多代碼嗎? – sachleen
位置拋出的代碼在哪裏? – pimvdb
那些省略號將導致代碼無法解析...你忽略了什麼? – Prusse