Então, estou fazendo um tutorial que contém uma parte sobre JavaScript assíncrono. Sinto que entendi muito bem, mas inclui esta seção que sinto que é errada para capturar erros?
async function myFunction {
// ...
await someObject.methodThatReturnsPromise();
// ...
await aFunctionThatReturnsPromise();
// ...
}
try {
// ...
myFunction();
// ...
} catch (e) {
// error handling code
}
Esta é a explicação que ele dá.
Você pode ver como isso funciona no exemplo abaixo. myFunction() é uma função assíncrona que é chamada dentro de um bloco try...catch. Quando myFunction() é executado, a execução do código é pausada em methodThatReturnsPromise() até que a promessa seja resolvida, momento em que o código continua para aFunctionThatReturnsPromise() e espera novamente. O código no bloco catch é executado se um erro for lançado na função assíncrona, e isso acontecerá se a promessa retornada por qualquer um dos métodos for rejeitada.
Meu entendimento é que tudo isso está incorreto? Para capturar erros, coloque o try...catch
bloco dentro de myFunction()
, ou capture os erros ao chamar myFunction()
no contexto global com
myFunction().catch((error) => console.log(error));