Для теста сделал такой сниппет.
try {
new Promise(() => {
console.log('run promise')
throw new Error('custom error')
}).catch(() => {
console.log('error catched in .catch')
})
} catch {
console.log('error catched in try-catch')
}
console.log('after test')
Он выводит такой результат
run promise
after test
error catched in .catch
error catched in try-catch - на сработал.
В доках по промисам пишется, что executor промиса работает
в текущем основном потоке. В этом нету сомнений
run promise выводится раньше
after test.
Но я не понял почему если эта операция выполняется синхронно, почему
я не могу ее уловить через try-catch?
Я так понимаю что executor промиса выполняется вне call stack текущего потока - поэтому try-catch тут бессилен.
Как это тогда работает? для executor промиса создается свой отдельный callstack?
Подскажите пожайлуйста кто знает ответ, если будет ссылка где описывается почему тут try-catch не работает
будет очень полезно, спасибо заранее.