try {
throw new Error('yikes!');
} catch (e) {
throw e;
} finally {
console.log('caught error!')
}
Распечатывает:
caught error!
Error: yikes!
Так что блок finally
работает до оператора throw?
Он только выглядит как будто блок finally запускается первым, но мы можем видеть, что на самом деле это не так:
let failed;
try {
throw new Error('yikes!');
failed = false;
} catch (e) {
failed = true;
throw e;
} finally {
console.log(`caught error! failed: ${failed}`)
}
печатает
caught error! failed: true
Error: yikes!
Так почему же выводится ошибка из группа? есть ли здесь какое-то асинхронное поведение, которого я не вижу?