setTimeout 内でエラーが発生しました
どう思いますか? .catch
が動作しますか? 答えを説明してください。
new Promise(function(resolve, reject) {
setTimeout(() => {
throw new Error("Whoops!");
}, 1000);
}).catch(alert);
答えは、いいえ、動作しません
new Promise(function(resolve, reject) {
setTimeout(() => {
throw new Error("Whoops!");
}, 1000);
}).catch(alert);
章で言及したように、関数コード周辺には「暗黙のtry..catch
」があります。そのため、すべての同期的なエラーが処理されます。
しかしここでは、エラーは実行中にではなく後から生成されます。そのため、Promiseでは処理できません。