我为什么不在async函数中使用try…catch?

广告位招租
扫码页面底部二维码联系

总之一句话:在async函数中使用try【转载请注明来源】【作者:唐霜】…catch会导致调试难道增【未经授权禁止转载】【版权所有,侵权必究】加。且任何使用使用try…c转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.netatch的场景,都会增加调试难度,比如r本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.neteact的报错信息,有的时候,你怎么都找未经授权,禁止复制转载。未经授权,禁止复制转载。不到问题代码具体在哪个位置。

【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】

当一个Error产生的时候,Error会本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。用stack字段记录该Error产生的具【作者:唐霜】【版权所有,侵权必究】体位置。只有,我们得到原始的Error,【转载请注明来源】原创内容,盗版必究。才能获得原始的stack信息,但是通过t【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。ry…catch语法,往往会【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。屏蔽原始的Error,导致我们追逐不到错【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。误的原始位置。比如:

原创内容,盗版必究。【未经授权禁止转载】【未经授权禁止转载】未经授权,禁止复制转载。
<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原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。ast, popup等方法。一旦我们通过【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】交互形式接住错误时,我们就直接放弃了获得本文版权归作者所有,未经授权不得转载。【转载请注明来源】错误原始信息的权利。

【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】

async函数本质上是创建一个异步函数,【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】而非创建一个封闭式的闭包。没错,如果你在原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.netasync函数中使用try…【本文受版权保护】本文作者:唐霜,转载请注明出处。catch跟使用闭包没有什么区别。异步函原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。数的目标,是完成异步操作,但其中重要的一【作者:唐霜】【原创不易,请尊重版权】点是,它的错误是可以被捕获的。为了实现这【版权所有,侵权必究】原创内容,盗版必究。种捕获,有些开发者会在 catch 中再本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】次把错误抛出来,比如 catch (e)【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。 { throw e }。但是这样做,会【原创内容,转载请注明出处】【本文首发于唐霜的博客】导致程序在这里又结束了。所以,这种做法又【转载请注明来源】著作权归作者所有,禁止商业用途转载。不符合在async函数中使用try【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】230;catch的目的。

转载请注明出处:www.tangshuang.net【未经授权禁止转载】

对于我个人而言,我从来不直接在async【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】函数中使用try…catch【本文受版权保护】【版权所有,侵权必究】,定义async函数是一个纯粹的asyn【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.netc…await结构,在使用该【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。函数时,使用.then().catch(【原创不易,请尊重版权】【作者:唐霜】).finally()接住函数执行过程中【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】的结果逻辑。

【未经授权禁止转载】【本文首发于唐霜的博客】【版权所有,侵权必究】

2021-01-13 4820

为价值买单,打赏一杯咖啡

本文价值48.2RMB
已有2条评论
  1. rxxy 2021-01-14 17:28

    要正确使用

  2. rxliuli 2021-01-13 12:07

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