X::Numeric::DivideByZero — 0으로 나누기

X::Numeric::DivideByZero — 0으로 나누기 (Division by zero)

0으로 나누면 결과가 정의되지 않는데, Raku는 어떤 동작을 보여줄까요? 꼭 바로 오류가 나는 건 아니고, 결과물을 실제로 사용하려는 순간 오류가 드러나요. 그 오류를 담당하는 타입이 X::Numeric::DivideByZero예요.

출처: Raku Documentation — X::Numeric::DivideByZero

본문

0으로 나누기를 시도하면 이 예외가 발생해요.

class X::Numeric::DivideByZero is Exception { }

예를 들어 1 / 0을 계산하면,

say 1 / 0;
CATCH { default { put .^name, ': ', .Str } };
# OUTPUT: «X::Numeric::DivideByZero: Attempt to divide by zero when coercing Rational to Str␤»

여기서 중요한 점을 짚고 넘어갈게요. 오류는 결과를 가지고 무엇인가를 하려는 순간에만 던져져요. 단순히

1/0; # no Error

처럼 계산만 하면 조용한 Failure만 생성될 뿐 오류가 나지 않아요. 위 첫 번째 예시에서 실제로 예외를 터뜨린 것은 say였던 거죠.

메서드 using

method using()

존재한다면, 사용된 연산자의 이름을 돌려줘요. 예를 들어 infix: 같은 값이에요.

메서드 details

method details()

존재한다면, 실패를 일으킨 연산에 대한 세부 정보가 담겨 있어요.

메서드 numerator

method numerator()

존재한다면, 연산의 분자(numerator)를 돌려줘요.

더 알아보기 (Learn more)