Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Gdy 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.

  1. W pliku notes.js zmień końcową gałąź else, tę, która wyświetla Unknown command:. Błędy trafiają do stderr, więc wyświetlaj je za pomocą console.error zamiast console.log.
  2. Jeśli wpisano polecenie, ale jest ono nieznane, wyświetl te dwa wiersze na stderr, w tej kolejności:
    Unknown command: remove
    Usage: node notes.js <command> [words]
    Pierwszy wiersz zawiera wpisane słowo: tutaj remove, z polecenia node 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.
  3. Jeśli po node notes.js nic nie wpisano, wyświetl na stderr tylko wiersz z instrukcją użycia. Nie wyświetlaj Unknown command: undefined.
  4. W obu przypadkach zakończ program kodem wyjścia 1, co oznacza „nie powiodło się”.
  5. add i list działają jak wcześniej. node notes.js add Buy milk nadal wyświetla Adding: Buy milk i 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}`);
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy Node.js

Poćwicz samodzielnie: Edytor online Express