Errori e codici di uscita
Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 5 di 33.
Quando un comando non riesce, chi si trova al terminale deve poter vedere il motivo e qualsiasi programma che ha eseguito il tuo deve sapere che non è riuscito.
Un programma ha due flussi di output: stdout per i risultati e stderr per gli errori, scritti con console.error. Quando termina, restituisce un codice di uscita: 0 significa che ha funzionato, qualsiasi altro valore significa che non è riuscito. process.exit(1) arresta immediatamente il programma con il codice 1.
// node divide.js 6 0
const [a, b] = process.argv.slice(2).map(Number);
if (b === 0) {
console.error('Cannot divide by zero');
process.exit(1);
}
console.log(a / b);Il terminale accanto al tuo codice mostra stderr in rosso e stampa il codice di uscita quando non è 0.
Sfida
FacileQuando qualcuno usa il tuo strumento in modo errato, dovrebbe spiegare come usarlo e segnalare al terminale che l'operazione non è riuscita. I programmi lo fanno con il flusso degli errori, stderr, e un codice di uscita.
- In
notes.js, modifica il ramoelsefinale, quello che stampaUnknown command:. Gli errori vanno su stderr, quindi stampali conconsole.errorinvece diconsole.log. - Quando è stato digitato un comando sconosciuto, stampa queste due righe su stderr, in quest'ordine:La prima riga indica la parola digitata: in questo caso
Unknown command: remove Usage: node notes.js <command> [words]remove, danode notes.js remove 3. La seconda riga è sempre la stessa. Copiala esattamente, con<command>e[words]così come sono scritti: fanno parte del testo, non sono valori da inserire. - Quando non è stato digitato nulla dopo
node notes.js, stampa solo la riga di utilizzo su stderr. Non stampareUnknown command: undefined. - In entrambi i casi, termina il programma con il codice di uscita 1, che significa «non è riuscito».
addelistfunzionano come prima.node notes.js add Buy milkstampa ancoraAdding: Buy milke termina con il codice di uscita 0.
Prova: premi Run lasciando vuoto il campo dopo $ node notes.js. Vedrai la riga di utilizzo in rosso e il terminale mostrerà il codice di uscita 1. Poi digita remove 3 e premi Invio: vedrai Unknown command: remove e la riga di utilizzo, entrambe in rosso, e il codice di uscita 1. Poi digita add Buy milk: vedrai Adding: Buy milk nel colore normale e nessun codice di uscita, perché il terminale nasconde lo 0.
Provalo tu
// Il tuo strumento per le note inizia qui.
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');
if (command === 'add') {
console.log(`Adding: ${text}`);
} else if (command === 'list') {
console.log('No notes yet');
} else {
console.log(`Unknown command: ${command}`);
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di Node.js
1Eseguire JavaScript con Node
Ciao, NodeLeggere il comandoArgomenti della riga di comandoComandiEsercitati da solo: Playground Express