MismatchedDelimiterError — 구분자가 어긋날 때

MismatchedDelimiterError — 구분자가 어긋날 때

괄호를 열었는데 닫는 괄호가 다른 종류라면 코드를 파싱할 때 문제가 생겨요. 그런 구분자(delimiter) 불일치가 발견되면 던져지는 예외가 바로 MismatchedDelimiterError예요.

출처: MismatchedDelimiterError

본문

MismatchedDelimiterError는 코드를 파싱하다가 짝이 맞지 않는 구분자를 발견했을 때 발생하는 예외예요. 예를 들어볼게요:

iex> Code.eval_string("[1, 2, 3}")
** (MismatchedDelimiterError) mismatched delimiter found on nofile:1:9:
...

[1, 2, 3}[로 시작해서 }로 끝나요. 열린 괄호와 닫힌 괄호의 종류가 서로 달라서, 파서가 "이건 짝이 안 맞는다"고 예외를 던지는 거예요.

이 예외의 다음 필드들은 public이라서 자유롭게 접근할 수 있어요:

  • :file (Path.t/0 또는 nil) — 오류가 발생한 파일. 파일에서 온 코드가 아니라면 nil
  • :line — 여는 구분자의 줄
  • :column — 여는 구분자의 열
  • :end_line — 짝이 안 맞는 닫는 구분자의 줄
  • :end_column — 짝이 안 맞는 닫는 구분자의 열
  • :opening_delimiter — 여는 구분자를 나타내는 atom
  • :closing_delimiter — 짝이 안 맞는 닫는 구분자를 나타내는 atom
  • :expected_delimiter — 있어야 했을 닫는 구분자를 나타내는 atom
  • :description — 이 구분자 불일치 오류에 대한 설명

즉, "어디서(파일·줄·열) 어떤 구분자를 열었는데, 어떤 구분자로 닫혔고, 실제로는 어떤 닫는 구분자가 기대됐는지"를 한 번에 알 수 있어요. 코드를 분석하는 도구(IDE, 린터, 포매터)를 만들 때 유용하게 쓰는 정보예요.

더 알아보기