SystemStackError
SystemStackError (스택 오버플로우 예외)
재귀 호출이 너무 깊어져 스택이 넘쳐버릴 때(스택 오버플로우) Ruby가 던지는 예외에요. 우리가 코드를 짜다 보면 실수로 끝없이 자기 자신을 호출하는 함수를 만들 때가 있는데, 그럴 때 이 예외를 만나게 돼요.
출처: Ruby 3.3 API
본문
스택 오버플로우가 발생하면 SystemStackError가 던져져요. 예를 들어 아무런 탈출 조건 없이 자기 자신을 끝없이 부르는 아래 코드를 볼게요.
def me_myself_and_i
me_myself_and_i
end
me_myself_and_i
이 코드는 다음과 같은 예외를 던져요.
SystemStackError: stack level too deep
stack level too deep이라는 메시지와 함께 스택 깊이(stack level)가 너무 깊어졌다고 알려주는 거예요. 재귀 함수의 종료 조건을 빠뜨리거나, 무한 재귀이자 무한 반복이 되는 구조를 만들었을 때 자주 볼 수 있으니 참고하세요.