专栏名称: Java编程精选
关注语言编程Java,分享、交流Java编程技巧和信息
今天看啥  ›  专栏  ›  Java编程精选

async/await 到底要不要加 try catch?

Java编程精选  · 公众号  · Java  · 2025-03-22 18:00
    

主要观点总结

文章主要讨论了在使用async函数时,try catch语句在捕获异常方面的应用及其在不同场景下的使用考量。文章提供了三个代码示例来展示不同的处理方式,并对此进行了分析与比较。

关键观点总结

关键观点1: 文章引言提出了关于async函数中使用try catch来捕获异常的问题,并指出在实际项目中存在不同的处理方式。

文章开头引发了关于如何使用try catch来捕获async函数中的异常的讨论,并提出了不同开发者有不同的使用习惯。

关键观点2: 示例1展示了使用try catch的基本方式,并解释了其逻辑。

在第一个示例中,文章展示了如何在async函数中使用try catch来捕获异常,当出现异常时,函数会中断执行。

关键观点3: 示例2讨论了直接catch的方式,并指出了其可能的问题。

第二个示例展示了如何在没有try catch的情况下使用await后面的Promise对象的catch方法来捕获异常,但这样做会导致程序不会中断执行,需要对返回值进行非空校验。

关键观点4: 示例3探讨了catch里使用reject的进一步优化方式,并指出了其可能的问题。

第三个示例展示了在catch里使用reject的优化方式,可以在出现异常时使await中断执行,但可能会导致控制台出现uncaught (in promise)报错信息。

关键观点5: 文章结尾对几种写法进行了总结,并给出了建议。

文章最后总结了几种写法的优缺点,并给出了建议,认为try catch逻辑直观、符合同步编程思维,且控制台不会暴露uncaught (in promise)报错信息,可能是最好的选择。


文章预览

前言 写异步函数的时候,promise 和 async 两种方案都非常常见,甚至同一个项目里,不同的开发人员都使用不同的习惯, 不过关于两者的比较不是本文关注的重点,只总结为一句话:“async 是异步编程的终极解决方案”。 当使用 async 函数的时候,很多文章都说建议用  try catch  来捕获异常, 可是实际上我看了很多项目的代码,遵循的并不是严谨,很多都没有用,甚至 catch 函数都没写,这是为什么呢? 我们先看下使用 try catch 情况下的代码示例: 示例1 :使用 try catch function   getUserInfo  () {      return  new Promise((resolve, reject) => {         setTimeout(() => {                 reject( '请求异常' )         }, 1000)     }) } async  function   logined  () {     try {          let  userInfo = await getUserInfo()         // 执行中断          l ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览