Manejo de errores
Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 13 de 24.
Un archivo notes.json editado a mano puede dañarse y, después, JSON.parse lanza una excepción y Node imprime un seguimiento de la pila.
try ejecuta código que puede lanzar una excepción. Cuando lo hace, catch recibe el error y tu programa decide qué decir. err.message es el motivo en una sola línea.
let config;
try {
config = JSON.parse('{ port: 3000 }');
} catch (err) {
console.error(`config is broken: ${err.message}`);
process.exit(1);
}No captures el error para luego continuar con una lista vacía: el siguiente add sobrescribiría el archivo dañado y se perderían todas las notas que contiene.
Desafío
Fácil- Cuando
notes.jsonno es un JSON válido, todos los comandos imprimennotes.json is damaged: <message>en stderr y terminan con1. - El archivo
notes.jsoninicial está dañado a propósito.
Ejecuta node notes.js list antes y después de tu cambio. Después, elimina la coma adicional en notes.json y vuelve a ejecutar list.
Pruébalo tú mismo
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 las lecciones de Conceptos básicos de Node.js
1Ejecutar JavaScript en Node
Hola, NodeArgumentos de la línea de comandosComandos