Błędy i kody wyjścia
Część sekcji Podstawy Node.js ścieżki Node.js w Coddy. Lekcja 5 z 33.
Gdy polecenie kończy się niepowodzeniem, osoba przy terminalu musi wiedzieć dlaczego, a każdy program, który uruchomił twój program, musi wiedzieć, że się nie powiódł.
Program ma dwa strumienie wyjściowe: stdout dla wyników i stderr dla błędów, zapisywanych za pomocą console.error. Po zakończeniu zwraca kod wyjścia: 0 oznacza, że program zadziałał, a każda inna wartość oznacza, że zakończył się niepowodzeniem. process.exit(1) natychmiast zatrzymuje program i zwraca kod 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);Terminal obok twojego kodu wyświetla stderr na czerwono i wypisuje kod wyjścia, jeśli nie wynosi 0.
Wyzwanie
ŁatwyGdy ktoś niewłaściwie użyje Twojego narzędzia, powinno ono wyjaśnić, jak go używać, i poinformować terminal, że działanie się nie powiodło. Programy robią to za pomocą strumienia błędów, stderr, oraz kodu wyjścia.
- W pliku
notes.jszmień końcową gałąźelse, tę, która wyświetlaUnknown command:. Błędy trafiają do stderr, więc wyświetlaj je za pomocąconsole.errorzamiastconsole.log. - Jeśli wpisano polecenie, ale jest ono nieznane, wyświetl te dwa wiersze na stderr, w tej kolejności:Pierwszy wiersz zawiera wpisane słowo: tutaj
Unknown command: remove Usage: node notes.js <command> [words]remove, z polecenianode notes.js remove 3. Drugi wiersz jest zawsze taki sam. Skopiuj go dokładnie, razem z<command>i[words], tak jak zostały zapisane: są częścią tekstu, a nie elementami do uzupełnienia. - Jeśli po
node notes.jsnic nie wpisano, wyświetl na stderr tylko wiersz z instrukcją użycia. Nie wyświetlajUnknown command: undefined. - W obu przypadkach zakończ program kodem wyjścia 1, co oznacza „nie powiodło się”.
addilistdziałają jak wcześniej.node notes.js add Buy milknadal wyświetlaAdding: Buy milki kończy działanie kodem wyjścia 0.
Wypróbuj: naciśnij Uruchom, gdy pole po $ node notes.js jest puste. Zobaczysz wiersz z instrukcją użycia na czerwono, a terminal pokaże kod wyjścia 1. Następnie wpisz remove 3 i naciśnij Enter: zobaczysz Unknown command: remove oraz wiersz z instrukcją użycia, oba na czerwono, i kod wyjścia 1. Następnie wpisz add Buy milk: zobaczysz Adding: Buy milk w zwykłym kolorze, bez kodu wyjścia, ponieważ terminal ukrywa wartość 0.
Spróbuj swoich sił
// Twoje narzędzie do notatek zaczyna się tutaj.
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}`);
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy Node.js
1Uruchamianie JavaScript w Node
Witaj, NodeOdczytywanie poleceniaArgumenty wiersza poleceńPolecenia5Zdarzenia, dane wejściowe i pakiety
Nasłuchuj przed emisjąEmitery zdarzeńOdczytywanie danych wejściowychPoćwicz samodzielnie: Edytor online Express