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?
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?
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!