1
resposta

[Bug] Node executa apenas a função pegaArquivo com erro e não executa a com texto

Quando tento executar a função pegaArquivo com um arquivo existe, o programa funciona bem e me retorna o texto. Porém ao tentar executar duas vezes e uma delas sendo um erro e outra um arquivo existe, ela me retorna apenas o erro, e não me retorna o texto e após o erro.

uma coisa que notei, é que colocando o finally, a mensagem de operação concluida vem antes da mensagem de erro.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá João, tudo bem?

Isso ocorre porque quando você chama a função pegaArquivo com um caminho de arquivo válido, ela executa normalmente e imprime o conteúdo do arquivo no console usando console.log(chalk.green(texto)).

No entanto, quando você chama a mesma função com um caminho de arquivo inválido, o bloco catch é executado e a função trataErro é chamada, que por sua vez imprime o erro no console usando console.log(erro) e lança uma nova exceção usando throw new Error(chalk.red(erro.code, 'não há arquivo no diretório')). Isso interrompe a execução da função pegaArquivo e a função que a chamou, que é o seu programa principal, não recebe nenhum resultado.

Em relação ao texto do finally que é apresentado antes do erro, essa é a forma correta! O finally é uma operação que sempre vai ocorrer, com ou sem erro, que representa o fim da compilação do código normal, e na situação padrão, quando dá tudo certo, ele é apresentado no fim. Porém, em caso de erro, ele deve ser apresentado antes, pois a compilação do código já acabou, restando agora o alerta do erro.

Espero ter ajudado. Caso tenha mais dúvidas ou problemas com relação a este tópico, estarei a disposição para ajudá-lo.

Abraços e bons estudos!

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