什么时候应该使用try catch而不是then catch?

问题描述 投票:0回答:2

问题很简单,但我没有在任何地方找到答案。

我什么时候应该使用try catch?在下面的代码中我使用try catch来处理请求的返回:

async findUsers() {
    this.loading = true;

    try {
        const [users, count] = await this.api.get('/users/list');

        this.users = users;
        this.totalPages = Math.ceil(parseInt(count) / 10);
    }
    catch (error) {
        this.Messages.requestFailed(error);
    }
    finally {
        this.loading = false;
    }
}

使用 then(...).catch(...) 会是一个 好的做法吗?

javascript asynchronous promise
2个回答
25
投票

区别在于你如何传递 Promise。

如果您使用

await
来处理 Promise,那么您可以将其包装在
try/catch
中。将
await
视为一种使异步操作在语义上类似于同步操作的方法(至少在等待它的函数的上下文中,尽管消耗代码)。

但是,如果您使用

await
,而是通过附加
.then()
来处理 Promise,那么您可以将
.catch()
附加到该链以捕获异步操作中的失败。

因为如果不等待该操作,则

try/catch
不会捕获异步操作中发生的异常。


0
投票

当您使用 Promise(异步操作)时,您需要在发生错误时处理异常。所以在这种情况下你可以使用 .then().catch(err) {}

当你有同步代码时,使用 try/catch 进行异常处理。

© www.soinside.com 2019 - 2024. All rights reserved.