私は次のコードを持っています:
try {
...
try {
// This is *never* called
alert('TRY');
} catch (e) {
// But this *is* called
alert('CATCH');
}
} catch (e2) {
...
}
問題は、内部ブロックからのアラートは実行されますが、内部catch
ブロックからのアラートは実行されないことtry
です。
これは仕様ごとに可能ですか、それともここで何が起こっているのか誰かが知っていますか?
たとえば非同期コードからの例外が別のcatchブロックのコンテキストに実行される可能性はありますか?
これは私がそこに入れた実際のコードであり、内側のtry
/に省略がないことに注意してくださいcatch
。一部の非同期コードは、ブロックに入る前に実行される場合があります。
これは、PyQt4.9.0およびQt4.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));