1
resposta

Praticando com erros

Pensando na natureza da aplicação, optei por adicionar o código do erro EISIDR, visto que o programa espera receber um arquivo e não um diretório. Além disso, pensei também em adicionar o identificar EINVAL, pensando no tipo de arquivo esperado (.txt), porém, não tenho certeza se seria o mais apropriado.

function trataErros(erro) {
    if(erro.code === 'ENOENT') {
        throw new Error('Arquivo não encontrado');
        // return 'Arquivo não encontrado';
    } else if(erro.code === 'EISDIR') {
        throw new Error('Esperado um arquivo, mas foi encontrado um diretório'); 
    } else {
        return 'Erro na aplicação';
    }
};

module.exports = trataErros;
1 resposta

Oi, João Victor! Como vai?

Agradeço por compartilhar sua solução e reflexões com a comunidade Alura.

A escolha de tratar o código EISDIR foi bem pensada, pois realmente evita que o programa tente processar diretórios quando espera arquivos. Sobre o EINVAL, ele está mais relacionado a argumentos inválidos passados para chamadas de sistema, então pode não ser tão confiável para validar extensões como .txt.

Uma dica interessante para o futuro é usar o método path.extname() do Node.js para verificar a extensão esperada.


const path = require('path');

function verificaExtensao(arquivo) {
    if (path.extname(arquivo) !== '.txt') {
        throw new Error('Formato de arquivo inválido. Esperado um .txt');
    }
    console.log('Arquivo válido:', arquivo);
}

// Testes
try {
    verificaExtensao('relatorio.txt'); // Válido
    verificaExtensao('imagem.png');    // Erro
} catch (erro) {
    console.error(erro.message);
}

Esse tipo de validação te dá controle mais direto sobre os arquivos aceitos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!