总之一句话:在async函数中使用try未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。…catch会导致调试难道增转载请注明出处:www.tangshuang.net【未经授权禁止转载】加。且任何使用使用try…c【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】atch的场景,都会增加调试难度,比如r【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.neteact的报错信息,有的时候,你怎么都找【原创不易,请尊重版权】【原创内容,转载请注明出处】不到问题代码具体在哪个位置。
【作者:唐霜】【访问 www.tangshuang.n【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】et 获取更多精彩内容】转载请注明出处:www.tangshua【关注微信公众号:wwwtangshuangnet】【本文受版权保护】ng.net当一个Error产生的时候,Error会【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。用stack字段记录该Error产生的具【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。体位置。只有,我们得到原始的Error,【本文受版权保护】本文版权归作者所有,未经授权不得转载。才能获得原始的stack信息,但是通过t未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。ry…catch语法,往往会【转载请注明来源】本文版权归作者所有,未经授权不得转载。屏蔽原始的Error,导致我们追逐不到错【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。误的原始位置。比如:
原创内容,盗版必究。【原创不易,请尊重版权】【访问 www.tangshuang.n本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】et 获取更多精彩内容】【原创不易,请尊重版权】<script>
'use strict'
async function calc() {
try {
const x = await a + await b
const y = x + await z
return y
}
catch (e) {
alert('计算错误')
}
}
calc()
</script>
我们用alert来替代我们经常使用的to转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】ast, popup等方法。一旦我们通过著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】交互形式接住错误时,我们就直接放弃了获得【原创内容,转载请注明出处】【原创不易,请尊重版权】错误原始信息的权利。
【版权所有】唐霜 www.tangshu本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.netang.net本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。【转载请注明来源】ngnet】【转载请注明来源】async函数本质上是创建一个异步函数,【本文受版权保护】【版权所有,侵权必究】而非创建一个封闭式的闭包。没错,如果你在【原创内容,转载请注明出处】【作者:唐霜】async函数中使用try…【未经授权禁止转载】【未经授权禁止转载】catch跟使用闭包没有什么区别。异步函【转载请注明来源】【版权所有,侵权必究】数的目标,是完成异步操作,但其中重要的一【转载请注明来源】转载请注明出处:www.tangshuang.net点是,它的错误是可以被捕获的。为了实现这【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】种捕获,有些开发者会在 catch 中再【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net次把错误抛出来,比如 catch (e)未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net { throw e }。但是这样做,会【作者:唐霜】本文作者:唐霜,转载请注明出处。导致程序在这里又结束了。所以,这种做法又【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。不符合在async函数中使用try著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。230;catch的目的。
【关注微信公众号:wwwtangshua【版权所有,侵权必究】【版权所有,侵权必究】ngnet】未经授权,禁止复制转载。转载请注明出处:www.tangshua【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.netng.net对于我个人而言,我从来不直接在async【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。函数中使用try…catch【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】,定义async函数是一个纯粹的asyn著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】c…await结构,在使用该本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。函数时,使用.then().catch(【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。).finally()接住函数执行过程中【版权所有,侵权必究】原创内容,盗版必究。的结果逻辑。
【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。

要正确使用
有点误人子弟了。。。async 函数中的 try/catch 和 then/catch 没什么区别吧?