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

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

DDD
DDD原创
2024-12-09 20:10:16485浏览

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

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

在 TypeScript 等语言中利用 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
}
外部声明的替代方案

如果您只想处理来自在承诺分配中,您有三种选择:

  1. 变量分配测试:在块外声明变量并检查其赋值:
let createdUser;
try {
    createdUser = await this.User.create(userInfo);
} catch (error) {
    console.error(error); // from creation
}
if (createdUser) { // user was successfully created
    console.log(createdUser);
    // business logic goes here
}
  1. 错误类型测试: 测试捕获的异常的类型并进行相应处理:
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;
    }
}
  1. 然后回调: 使用带有两个回调的 then 方法,而不是 try/catch 块:
await this.User.create(userInfo).then(createdUser => {
    // user was successfully created
    console.log(createdUser);
    // business logic goes here
}, error => {
    console.error(error); // from creation
});
每种替代方案都有其优点和缺点,因此在选择时请考虑应用程序的具体要求最合适的方法。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn