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.
Desafio
Fácil- Quando
notes.jsonnão é um JSON válido, cada comando imprimenotes.json is damaged: <message>em stderr e encerra com1. - O arquivo
notes.jsoninicial 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
1Executando JavaScript no Node
Olá, NodeArgumentos de linha de comandoComandos