ZeroDivisionError 클래스

ZeroDivisionError 클래스

ZeroDivisionError는 정수를 0으로 나누려고 했을 때 발생하는 예외예요. 산술 연산에서 가장 직관적이고 자주 접하는 예외죠.

출처: Ruby 4.0 API — ZeroDivisionError

본문

42 / 0   #=> ZeroDivisionError: divided by 0

여기서 헷갈리기 쉬운 부분이 있는데, 정확히 0으로 나눌 때만 이 예외가 발생한다는 점이에요. 0.0 같은 부동소수점으로 나누면 예외가 아니라 무한대나 NaN 같은 값이 나와요.

42 /  0.0   #=> Float::INFINITY
42 / -0.0   #=> -Float::INFINITY
0  /  0.0   #=> NaN

42 / 0처럼 정수끼리 나누면 ZeroDivisionError가 터지지만, 42 / 0.0은 부동소수점 나눗셈이 되어 무한대가 되는 차이예요. 정수 나눗셈에서 0으로 나누는 실수를 방지하려면, 0이 될 수 있는 값에 대해 조건 분기를 걸거나 divmod 같은 메서드로 미리 확인하는 게 일반적이에요.