【发布时间】:2020-06-04 21:50:44
【问题描述】:
我有以下打字稿代码,其中我从承诺创建函数中抛出了一个同步错误:
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 节按预期捕获它。
我在 Windows 10 上使用 Chrome 80.0.3987.116 和 typescript 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);
}
}
【问题讨论】:
标签: javascript typescript google-chrome-devtools es6-promise