오류와 종료 코드
Coddy Node.js 여정의 Node.js 기초 섹션에 포함된 레슨. 33개 중 5번째.
명령이 실패하면 터미널에 있는 사람은 그 이유를 알아야 하고, 네 프로그램을 실행한 프로그램도 명령이 실패했다는 사실을 알아야 합니다.
프로그램에는 두 개의 출력 스트림이 있습니다. 결과를 위한 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에서Unknown command:를 출력하는 마지막else분기를 변경하세요. 오류는 stderr로 보내므로console.log대신console.error로 출력하세요.- 명령어를 입력했지만 알 수 없는 명령어인 경우, 다음 두 줄을 이 순서대로 stderr에 출력하세요:첫 번째 줄에는 입력한 단어의 이름이 표시됩니다. 여기서는
Unknown command: remove Usage: node notes.js <command> [words]node notes.js remove 3에서 입력한remove입니다. 두 번째 줄은 항상 동일합니다.<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 기초의 모든 레슨
직접 연습해 보세요: Express 플레이그라운드