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では処理できません。