您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Async / Await正确尝试…捕获语法

使用Async / Await正确尝试…捕获语法

似乎最好的做法是不要在try主体中放置多行业务逻辑

其实我会说是的。通常,您需要使用该值来处理catch 所有 异常:

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; // or use var inside the block 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 }

测试捕获到的异常的类型,然后根据该异常进行处理或重新抛出。

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; } }

不幸的是,标准JavaScript(仍然)不支持条件异常的语法。

await this.User.create(userInfo).then(createdUser => {
// user was successfully created
console.log(createdUser)
// business logic goes here

}, error => { console.error(error) // from creation });

当然,它带有引入回调函数的缺点,这意味着您不能像从外部函数那样轻松地break/continue循环或执行早期操作return

其他 2022/1/1 18:14:23 有618人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶