Version.InvalidVersionError 예외

Version.InvalidVersionError 예외

버전 문자열을 파싱하다 보면 형식이 어긋난 값을 만날 때가 있어요. 이 예외는 그런 경우, 즉 버전이 유효하지 않을 때 발생해요. Version 모듈의 파싱 함수가 형식 오류를 만나면 던져지는 예외예요.

출처: Version.InvalidVersionError exception (Elixir v1.20.4)

본문

Version.InvalidVersionError는 버전이 유효하지 않을 때 발생하는 예외예요.

예를 들어 Version.parse!/1은 버전 문자열을 파싱하다가 오류가 나면 이 예외를 던져요. 느낌표(!)가 붙은 함수는 실패 시 예외를 던지는 관례이므로, 잘못된 형식의 버전 문자열을 넘기면 이 예외를 만나게 되죠.

Version 모듈은 Semantic Versioning(SemVer) 규칙을 따라 버전을 파싱해요. 버전은 보통 1.2.3처럼 주(major)·부(minor)·패치(patch) 세 숫자로 구성되고, 뒤에 프리릴리스(-rc.1), 빌드 메타데이터(+build) 같은 부분이 붙을 수 있어요. 이 문법에서 벗어난 문자열은 InvalidVersionError로 이어져요. 예를 들어 숫자가 아닌 값이 들어 있거나, .로 구분되지 않거나, 완전히 빈 문자열인 경우가 대표적이에요.

디버깅할 때는 Version.parse/1처럼 느낌표가 없는 함수로 파싱하고 {:ok, version}/{:error, reason} 형태의 반환값을 확인하는 게 도움돼요. 그러면 예외로 프로그램이 중단되기 전에, 입력 문자열에서 어떤 부분이 버전 문법에 어긋났는지 파악할 수 있어요. 버전을 파싱하기 전에 문자열이 1.2.3 형태를 갖추고 있는지 간단히 확인만 해도 이 예외를 피하는 데 큰 도움이 돼요.

더 알아보기