Ошибки и коды завершения
Часть раздела Основы Node.js путешествия по Node.js на Coddy. Урок 5 из 33.
Если команда завершается с ошибкой, человек у терминала должен видеть причину, а любая программа, запустившая вашу, должна знать, что она завершилась с ошибкой.
У программы есть два потока вывода: stdout для результатов и stderr для ошибок, которые выводятся с помощью console.error. При завершении программа возвращает код выхода: 0 означает, что она выполнилась успешно, любое другое значение означает ошибку. process.exit(1) немедленно останавливает программу с кодом 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);Терминал рядом с вашим кодом отображает stderr красным цветом и выводит код выхода, если он не равен 0.
Задание
ЛегкоЕсли кто-то неправильно пользуется твоим инструментом, он должен объяснить, как им пользоваться, и сообщить терминалу о сбое. Программы делают это с помощью потока ошибок stderr и кода завершения.
- В
notes.jsизмени последнюю веткуelse— ту, которая выводитUnknown command:. Ошибки направляются в stderr, поэтому выводи их с помощьюconsole.error, а неconsole.log. - Если команда была введена, но она неизвестна, выведи в stderr эти две строки в указанном порядке:В первой строке указано введённое слово: здесь это
Unknown command: remove Usage: node notes.js <command> [words]removeизnode notes.js remove 3. Вторая строка всегда одинакова. Скопируй её точно, включая<command>и[words]: это часть текста, а не значения, которые нужно подставить. - Если после
node notes.jsничего не введено, выведи в stderr только строку с инструкцией по использованию. Не выводиUnknown command: undefined. - В обоих случаях заверши программу с кодом завершения 1 — это означает «произошёл сбой».
addиlistработают как и прежде. Командаnode notes.js add Buy milkпо-прежнему выводитAdding: Buy milkи завершается с кодом 0.
Попробуй: нажми «Запустить», оставив поле после $ node notes.js пустым. Ты увидишь строку с инструкцией по использованию красным цветом, а в терминале появится код завершения 1. Затем введи remove 3 и нажми Enter: ты увидишь Unknown command: remove и строку с инструкцией по использованию — обе красным цветом, а также код завершения 1. Затем введи add Buy milk: ты увидишь Adding: Buy milk обычным цветом, и код завершения не появится, потому что терминал скрывает 0.
Попробуйте сами
// Здесь начинается ваш инструмент для заметок.
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}`);
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы Node.js
1Запуск JavaScript в Node
Привет, NodeЧтение командыАргументы командной строкиКомандыПотренируйтесь самостоятельно: Песочница Express