1
resposta

Necessidade do IF no Try-Catch

Olá, minha dúvida é se dentro do "try-catch" o erro não seria capturado de qualquer forma, por isso, não entendi a necessidade do "IF" para verificar o parâmetro "erro". Poderia me explicar melhor? Obrigado.

1 resposta

Olá, Giuli! Joia

No exemplo da aula, o if (erro) fora do bloco try serve para verificar se houve algum erro na execução da função readFile. Se houver, ele lança (throw) esse erro para ser tratado posteriormente. Isso é importante porque readFile é uma função assíncrona que pode falhar, e queremos capturar esse erro específico.

Dentro do try, colocamos o código que queremos executar e que pode potencialmente gerar um erro. Se qualquer erro ocorrer dentro desse bloco, ele será capturado pelo catch.

A razão para mover o if (erro) para dentro do try é porque queremos tratar todos os erros possíveis em um único lugar, facilitando a manutenção e o entendimento do código. Quando o throw erro é executado, ele lança o erro que será capturado pelo catch, onde podemos verificar o tipo de erro com if (erro.code === 'ENOENT') e tomar ações específicas para cada tipo de erro.

Aqui está um exemplo simplificado para ilustrar:

fs.readFile(link, 'utf-8', (erro, texto) => {
    try {
        if (erro) throw erro; // Lança o erro para ser capturado pelo catch
        contaPalavras(texto); // Tenta executar a função que pode gerar um erro
    } catch (erro) {
        if (erro.code === 'ENOENT') {
            console.log('Erro que esperava: arquivo não encontrado');
        } else {
            console.log('Outro erro: ', erro.message);
        }
    }
});

Espero ter ajudado e bons estudos!

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