1
resposta

Não entendi direito o catch (e)

Queria saber mais o que ouve por baixo dos panos, como o throw Error foi para no (e) do catch. Como o catch pegou esse erro de outra função, o que exatamente aconteceu?

1 resposta

Oi, Eden! Tudo bem?

Desculpa a demora por um retorno.

Para entendermos o que aconteceu precisamos inicialmente entender o que cada comando é e como funciona. Sabemos que o throw é uma forma de declarar um erro "manualmente", lançar uma exceção definida pelo usuário. Dessa forma, quando esse erro acontecer as instruções após o throw não serão executadas e será passado o controle para o primeiro bloco catch encontrado na pilha de chamadas, caso não exista nenhum bloco catch entre as funções o programa finaliza.

O catch é um comando usado em conjunto com o try usado para capturar e tratar exceções lançadas pelo throw. A sintaxe de um bloco try-catch pode ser exemplificada no código abaixo:

try {
  // Código que pode gerar exceções
} catch (excecao) {
  // Tratamento da exceção
}

Dentro do documento conectaApi.js a função criaVideo() vai fazer uma requisição, caso a resposta retornada não seja bem sucedida criaremos manualmente o erro/exceção:

    if (!conexao.ok) {
        throw new Error("Não foi possível enviar o vídeo")
    }

Como unimos o documento conectaApi.js ao documento criarVideo.js através do comando : import { conectaApi } from "./conectaApi.js", podemos ter acesso à função criaVideo() , que originalmente é uma função do documento conectaApi.js, dentro do documento criarVideo.js.

Dessa forma, temos o trecho de código abaixo:

    try {
        await conectaApi.criaVideo(titulo, descricao, url, imagem);

        window.location.href = "../pages/envio-concluido.html";
    } catch (e) {
        alert(e);
    }
}

Nesse trecho de código vamos importar as funcionalidades da função criaVideo dentro de conectaApi, que caso retorne o erro adicionado por nós manualmente, será capturado pelo catch, pois essa é a sua funcionalidade, como foi explicado anteriormente. A variável "e" é um parâmetro que representa o objeto da exceção que foi lançada pelo bloco "try" e pode ter qualquer outro nome que quisermos.

Espero ter ajudado na compreensão do que ocorreu!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓