У меня есть следующий машинописный код, в котором я генерирую синхронную ошибку из функции создания обещания:
function testExc(url: string): Promise<GLTF | undefined> {
try {
const promise: Promise<GLTF> = new Promise((resolve, reject) => {
throw Error('hi')
})
promise.catch((err) => { console.log(`Caught ${err}`) })
return promise
} catch (e) {
return Promise.resolve()
}
}
, которая, к моему удивлению, вызывает «Приостановлено при отклонении обещания» в Chrome Инструменты разработчика на throw
строка. У меня включен режим «Приостановить исключения» и «Приостановить обнаруженные исключения», потому что я хочу знать о неисследованных исключениях.
Почему происходит пауза? Я ловлю исключения двумя способами: с .catch
и try/catch
вокруг всего этого. Когда я продолжаю, .catch
строфа ловит его, как и ожидалось.
Я использую Chrome 80.0.3987.116 на Windows 10, с машинописным текстом 3.7.
Транспортированный JS код выглядит так, если это полезно:
function testExc(url) {
try {
const promise = new Promise((resolve, reject) => {
throw Error('hi');
resolve(undefined);
});
promise.catch(err => {console.log(`Caught ${err}`);});
return promise;
}
catch (e) {
return Promise.resolve(undefined);
}
}