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