问题描述
test.js代码
for (let i = 0; i < 10; i++) {
console.log(i)
try {
const j = await import('./errorThrowingModule.js')
} catch (error) {
console.dir(error)
}
}
errorThrowingModule.js的代码
adsfasdfsdafas()
test.js的结果(由Deno运行)
0
ReferenceError: asdfasdfsdafas is not defined
at file://~~~~~~
1
error: Uncaught ReferenceError: asdfasdfsdafas is not defined
at file://~~~~~
我猜错了为什么在第二次导入中未捕获到错误的原因,
- 导入本身没有错。 (请参阅以下代码以供您理解)
try {
import('./errorThrowingModule.js')
} catch {
// it never reaches here
}
try {
await import('./errorThrowingModule.js')
} catch (error) {
console.dir(error) // it reaches here
}
当等待诺言被模块抛出的错误拒绝时,会捕获到错误, 不导入自身。
-
导入永远不会执行两次。 (这可能不需要进一步说明。)
-
等待已经被拒绝的承诺不会导致这种情况的复杂性
try {
await Promise.reject(new Error())
} catch (error) {
console.dir(error) // code reaches here
}
我不知道import
在第二次运行时的表现如何。
也许是第二次运行,代码根本await
和import
都不是。
我不知道如何有效地处理由模块引起的错误。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)