import fs from 'fs';
import chalk from 'chalk';
function trataErro(erro) {
throw new Error(chalk.red(erro.code, 'Arquivo não encontrado. Verifique se o arquivo existe ou se o caminho/diretório esta correto.'));
}
//async/await:
async function pegaArquivo(caminhoDoArquivo) {
try {
const encoding = 'UTF-8';
const texto = await fs.promises.readFile(caminhoDoArquivo, encoding)
console.log(chalk.green(texto))
} catch (erro) {
trataErro(erro);
} finally {
console.log(chalk.yellow('Operação Concluída !'));
}
}
pegaArquivo('./arquivos/texto.md');
setInterval(() => pegaArquivo('./arquivos/'), 5000);
Tenho a seguinte dúvida, sempre que rodo esse código, a impressão no terminal é a resposta do try, seguidas pelas duas respostas do finally e por fim a do catch, como mostrado abaixo:
PS C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\Node.js - Criando a Primeira Biblioteca\2708-node-lib-md-arquivos-iniciais> node index.js
A interface File provê informações sobre arquivos e permite ao JavaScript a acessar seu conteúdo.
São geralmente recuperados a partir de um objeto [FileList](https://developer.mozilla.org/pt-BR/docs/Web/API/FileList) que é retornado como resultado da seleção, pelo usuário, de arquivos através do elemento [<input>](https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input), a partir do objeto [DataTransfer](https://developer.mozilla.org/pt-BR/docs/Web/API/DataTransfer) utilizado em operações de arrastar e soltar, ou a partir da API `mozGetAsFile()` em um [HTMLCanvasElement](https://developer.mozilla.org/pt-BR/docs/Web/API/HTMLCanvasElement). Em Gecko, códigos com privilégiios podem criar objetos File representando qualquer arquivo local sem a intereção do usuário (veja [Implementation notes](https://developer.mozilla.org/pt-BR/docs/Web/API/File#implementation_notes) para mais informações.).
[Teste de retorno 400](https://httpstat.us/404).
[gatinho salsicha](http://gatinhosalsicha.com.br/)
Operação Concluída !
Operação Concluída !
file:///C:/Users/Leonardo002/Desktop/Alura/Programa%C3%A7%C3%A3o/JavaScript-Back-End/Node.js%20-%20Criando%20a%20Primeira%20Biblioteca/2708-node-lib-md-arquivos-iniciais/index.js:5
throw new Error(chalk.red(erro.code, 'Arquivo não encontrado. Verifique se o arquivo existe ou se o caminho/diretório esta correto.'));
^
Error: EISDIR Arquivo não encontrado. Verifique se o arquivo existe ou se o caminho/diretório esta correto.
at trataErro (file:///C:/Users/Leonardo002/Desktop/Alura/Programa%C3%A7%C3%A3o/JavaScript-Back-End/Node.js%20-%20Criando%20a%20Primeira%20Biblioteca/2708-node-lib-md-arquivos-iniciais/index.js:5:11)
at pegaArquivo (file:///C:/Users/Leonardo002/Desktop/Alura/Programa%C3%A7%C3%A3o/JavaScript-Back-End/Node.js%20-%20Criando%20a%20Primeira%20Biblioteca/2708-node-lib-md-arquivos-iniciais/index.js:17:9)
Node.js v20.9.0
PS C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\Node.js - Criando a Primeira Biblioteca\2708-node-lib-md-arquivos-iniciais>
Mesmo utilizando o setIterval(conforma foi sugerido em outros exemplos que dei uma olhada), a ordem se mantem a mesma. Por que o finally se mantem sendo executado antes do catch e como eu posso fazer para que, nas duas chamadas, o resultado dele venha por ultimo? Exemplo: Primeira chamada - resultado do Try e logo abaixo resultado do finally; Segunda chama - resultado do catch e logo abaixo resultado do finally.