throw와 try/catch/finally로 예상 가능한 실패를 처리합니다.
throw는 정상 결과를 만들 수 없음을 알리고 현재 실행 흐름을 중단합니다. catch는 실패를 사용자 안내나 복구 흐름으로 바꾸고 finally는 성공 여부와 관계없이 정리 작업을 실행합니다. 모든 오류를 조용히 무시하지 말고 원인을 추적할 정보도 남깁니다.
parseScore에 문자열 120을 넘기면 Number 변환은 성공해 첫 번째 검사를 통과하지만, 100보다 커서 RangeError가 던져집니다. 그래서 점수: 문구는 만들어지지 않고 catch가 RangeError: 점수는 0~100이어야 합니다.를 표시하며, finally가 그 뒤에 줄을 바꿔 정리 문구를 덧붙입니다. 숫자가 아닌 값이었다면 첫 번째 검사에서 TypeError가 대신 던져집니다.
외부 입력과 실패가 정상 흐름을 깨뜨릴 수 있는 경계에서 사용합니다. 오류를 숨기지 말고 사용자에게 필요한 안내와 개발자가 추적할 정보를 분리하세요.
catch에서 빈 블록으로 오류를 삼키면 화면은 멈췄는데 원인은 찾기 어려운 상태가 됩니다.
직접 바꿔보세요120을 정상값과 숫자가 아닌 값으로 바꿔 각 경로를 확인하세요.