Menu
CoddyTech

Tratamento de erros

Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 13 de 24.

Um notes.json editado manualmente pode apresentar problemas, e então JSON.parse lança uma exceção e o Node imprime um rastreamento de pilha.

try executa código que pode lançar uma exceção. Quando isso acontece, catch recebe o erro, e seu programa decide o que dizer. err.message é a descrição do motivo em uma única linha.

let config;
try {
    config = JSON.parse('{ port: 3000 }');
} catch (err) {
    console.error(`config is broken: ${err.message}`);
    process.exit(1);
}

Não capture o erro e continue com uma lista vazia: o próximo add salvaria por cima do arquivo danificado, e todas as notas nele seriam perdidas.

challenge icon

Desafio

Fácil
  • Quando notes.json não é um JSON válido, cada comando imprime notes.json is damaged: <message> em stderr e encerra com 1.
  • O arquivo notes.json inicial está danificado de propósito.

Execute node notes.js list antes e depois da sua alteração. Em seguida, exclua a vírgula extra em notes.json e execute list novamente.

Experimente você mesmo

import { existsSync, readFileSync, writeFileSync } from 'node:fs';

const file = 'notes.json';

const store = {
    notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
    save() {
        writeFileSync(file, JSON.stringify(this.notes, null, 2));
    },
    add(text) {
        this.notes.push(text);
        this.save();
        return this.notes.length;
    },
    remove(n) {
        const [text] = this.notes.splice(n - 1, 1);
        this.save();
        return text;
    },
};

export default store;

Todas as lições de Fundamentos de Node.js