Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] catch está sobrepondo o if do erro

async function buscaEndereco() {
    try {
        let consultaCEP = await fetch("https://viacep.com.br/ws/01001250/json/")
        let consultaCEPConvertida = await consultaCEP.json();
        if (consultaCEPConvertida.erro) {
            throw Error('CEP não existente!');
        }
        console.log(consultaCEPConvertida);
    } catch (erro) {
        console.log('erro');
    }
}

buscaEndereco();

Mesmo colocando um CEP que não existe (como o 01001250 usado na aula) ou colocando um CEP com 7 ou 9 dígitos, cai no erro do catch, não vai no if

4 respostas
solução!

Oi, Mateus

Remova as aspas

console.log(erro);

Não tem jeito de eu lançar minha mensagem de erro no console (na aula anterior, tive o mesmo resultado, ainda usando then. Vou colar meu código, não consegui descobrir onde errei.

async function buscarEndereco() {
    try {
        let consultaCEP = await fetch("https://viacep.com.br/ws/0100100/json/")
        let consultaCEPConvertida = await consultaCEP.json();
        if (consultaCEPConvertida.erro) {
            throw Error('CEP não existente');
        }
        console.log(consultaCEPConvertida);
    } catch (erro) {
        console.log(erro);
    }

}

buscarEndereco();

Eu sempre obtenho: TypeError: Failed to fetch Notei que o highlite não pega onde eu escrevo erro (seja nos parêntesis do catch, ou nos do if.

Acho que entendi. Eu estava "forçando o erro" usando 7 dígitos para o CEP inválido ws/0100100. O retorno que eu tive era de um erro 400. Seguindo a orientação da aula, usando um número de CEP inválido MAS CONTENDO 8 DÍGITOS, aí, sim, minha mensagem customizada de erro apareceu na tela. Fica o registro aí pra quem sofrer dessa mazela. LOL

Boaa, estava com esse mesmo problema

Valeuu