首页 > web前端 > js教程 > 如何在 JavaScript 中正确使用 Try...Catch 和 Async/Await?

如何在 JavaScript 中正确使用 Try...Catch 和 Async/Await?

DDD
发布: 2024-12-29 04:37:10
原创
404 人浏览过

How to Correctly Use Try...Catch with Async/Await in JavaScript?

使用 Async/Await 的正确 Try...Catch 语法

在 JavaScript 的 Async/Await 功能中,通常会声明在 try 之外等待表达式的变量...catch 块以确保稍后可访问。然而,最佳实践是尽量减少 try 主体中的业务逻辑,以有效处理异常。

最佳实践

try {
  const createdUser = await this.User.create(userInfo);

  console.log(createdUser);
  // Business logic goes here
} catch (error) {
  console.error(error); // from creation or business logic
}
登录后复制

此方法可确保所有异常,包括来自业务逻辑的异常,被捕获。

处理 Promise 错误的替代选项

如果您只想从承诺,请考虑以下选项:

1。在块外声明变量并处理错误

在块外声明变量并通过分支处理错误:

let createdUser;
try {
  createdUser = await this.User.create(userInfo);
} catch (error) {
  console.error(error); // from creation
}
if (createdUser) {
  // User was created successfully
  console.log(createdUser);
  // Business logic goes here
}
登录后复制

2.测试捕获的异常类型

检查捕获的异常的类型并进行相应处理:

try {
  const createdUser = await this.User.create(userInfo);
  // User was successfully created
  console.log(createdUser);
  // Business logic goes here
} catch (error) {
  if (error instanceof CreationError) {
    console.error(error); // from creation
  } else {
    throw error;
  }
}
登录后复制

3.利用 .then() 回调

提供简单性和正确性的 try...catch 的替代方法是使用 .then() 回调:

await this.User.create(userInfo).then(
  (createdUser) => {
    // User was created successfully
    console.log(createdUser);
    // Business logic goes here
  },
  (error) => {
    console.error(error); // from creation
  }
);
登录后复制

考虑每个选项的优点和缺点根据您的具体要求。

以上是如何在 JavaScript 中正确使用 Try...Catch 和 Async/Await?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板