2
respostas

"Fetch" não retorna erro mesmo com url inválida

Boa tarde, pessoas!

Tenho a função assíncrona mais abaixo. Dentro dela estou chamando um "fetch" e passando uma url errada para forçar o erro. No entanto, quando faço o teste "if (!resposta.ok) {" não está caindo no "throw". O fetch está retornando uma resposta ok mesmo com a url errada e não está executando o "throw".

O problema ocorre apenas quando o "method" é do tipo "POST". Tenho também outras funções onde o fetch é dos tipos "GET", "DELETE" e "PUT" que funcionam certinho.

Alguém sabe porque isso acontece?

const criaCliente = async (nome, email) => {

    const resposta = await fetch("http://localhost:3000/profilekkk", {
        method: 'POST',
        headers: {
            'Content-Type' : 'application/json'
        },
        body: JSON.stringify({
                    nome: nome,
                    email: email
                })
    });
    if (!resposta.ok) {
        throw new Error("Não foi possível gravar o cliente.");
    } 
    return resposta.body;                
}
2 respostas

Seu código não teria que estar dentro de um bloco try / catch para capturar o erro que você está disparando? Ex:

const criaCliente = async (nome, email) => {
        try {
            //seu código ...
        } catch (error) {
            console.log(error)
        }
}

Sim, a parte do código onde eu chamo a função está num "try" e o "catch" está fazendo o tratamento do erro...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software