action — 예외를 일으킨 '행동'을 말로 돌려주기

action — 예외를 일으킨 '행동'을 말로 돌려주기

예외 타입마다 action이라는 메서드가 있는데, 이름은 같아도 어디에 붙느냐에 따라 돌려주는 설명이 조금씩 달라져요. 공통점은 하나예요. 이 메서드는 그 예외를 발생시킨 행동(action)이 무엇인지 사람이 읽을 수 있는 말로 돌려준다는 거죠. 어떤 예외 타입들에서 쓰이는지 함께 볼게요.

출처: Raku 공식 문서 — action

본문

In X::TypeCheck::Splice — 매크로 적용인지 언쿼트 평가인지

method action(--> Str:D)

이 예외를 트리거한 행동에 대한 설명을 돌려줘요. 돌아오는 값은 "macro application"(매크로 적용) 또는 "unquote evaluation"(언쿼트 평가) 둘 중 하나예요. 시그니처를 보면 Str:D로 강제되어 있어서, 항상 정의된 문자열이 나온다고 보면 돼요.

In X::Cannot::Empty — 부적절한 행동 설명

method action()

부적절했던 그 행동 자체에 대한 말로 된 설명(verbal description)을 돌려줘요. 이 타입에서는 Str:D 같은 타입 제약 없이 그냥 설명 문자열을 돌려주는 형태예요.

In X::Cannot::Lazy — 지연 컨텍스트에서 못 한 일

method action()

X::Cannot::Lazy 역시 부적절했던 행동에 대한 말로 된 설명을 돌려줘요. 시그니처도 앞선 X::Cannot::Empty와 같은 모양이에요. 세 타입 모두 '어떤 행동 때문에 실패했는가'를 알려주는 공통 역할을 한다는 점만 기억하면 돼요.