javascript – 如何使用async / await捕获抛出的错误?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使用async / await捕获抛出的错误?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1113字,纯文字阅读大概需要2分钟。
内容图文
这是一些代码:
import 'babel-polyfill'
async function helloWorld () {
throw new Error ('hi')
}
helloWorld()
我也深入尝试了这个:
import 'babel-polyfill'
async function helloWorld () {
throw new Error ('hi')
}
async function main () {
try {
await helloWorld()
} catch (e) {
throw e
}
}
main()
和:
import 'babel-polyfill'
async function helloWorld () {
throw new Error ('hi')
}
try {
helloWorld()
} catch (e) {
throw e
}
这有效:
import 'babel-polyfill'
async function helloWorld () {
throw new Error('xxx')
}
helloWorld()
.catch(console.log.bind(console))
解决方法:
所以它有点棘手,但是你没有捕获错误的原因是因为,在顶层,整个脚本可以被认为是一个同步函数.您想要异步捕获的任何内容都需要包装在异步函数中或使用Promises.
例如,这会吞下错误:
async function doIt() {
throw new Error('fail');
}
doIt();
因为它与此相同:
function doIt() {
return Promise.resolve().then(function () {
throw new Error('fail');
});
}
doIt();
在顶层,你应该总是添加一个普通的Promise风格的catch()来确保你的错误得到处理:
async function doIt() {
throw new Error('fail');
}
doIt().catch(console.error.bind(console));
在Node中,process上还有一个全局unhandledRejection事件,可用于捕获所有Promise错误.
内容总结
以上是互联网集市为您收集整理的javascript – 如何使用async / await捕获抛出的错误?全部内容,希望文章能够帮你解决javascript – 如何使用async / await捕获抛出的错误?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。