在 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 }
此方法可确保所有异常,包括来自业务逻辑的异常,被捕获。
如果您只想从承诺,请考虑以下选项:
在块外声明变量并通过分支处理错误:
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 }
检查捕获的异常的类型并进行相应处理:
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; } }
提供简单性和正确性的 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中文网其他相关文章!