Version.InvalidRequirementError 예외
Version.InvalidRequirementError 예외
버전 요구사항(requirement)을 잘못된 형식으로 작성하면 어떻게 될까요? 이 예외는 그런 경우, 즉 버전 요구사항이 유효하지 않을 때 발생해요. Version 모듈로 요구사항을 파싱하는 과정에서 형식 오류를 만나면 던져지는 예외예요.
출처: Version.InvalidRequirementError exception (Elixir v1.20.4)
본문
Version.InvalidRequirementError는 버전 요구사항이 유효하지 않을 때 발생하는 예외예요.
예를 들어 Version.parse_requirement!/1은 요구사항 문자열을 파싱하다가 오류가 나면 이 예외를 던져요. 느낌표(!)가 붙은 함수는 실패 시 예외를 던지는 관례이므로, 잘못된 형식의 요구사항을 넘기면 이 예외를 만나게 되죠.
버전 요구사항은 일반적인 버전 문자열과는 문법이 조금 달라요. 예를 들어 ~> 2.0이라든가 >= 1.0.0 and < 2.0.0처럼 연산자와 버전의 조합으로 표현돼요. 요구사항에 쓸 수 있는 연산자는 ==, !=, <=, >=, <, >, ~> 등이 있는데, 이 문법을 벗어난 문자열은 InvalidRequirementError로 이어져요.
디버깅할 때는 Version.parse_requirement/1 처럼 느낌표가 없는 함수로 파싱하고 {:ok, req}/{:error, reason} 형태의 반환값을 확인하는 게 도움돼요. 그러면 예외로 프로그램이 중단되기 전에 입력 문자열이 왜 잘못됐는지를 알 수 있어요. 문자열의 공백, 연산자 표기, and/or 연결을 꼼꼼히 살펴보면 실마리를 찾을 수 있어요.