EOFError 클래스

EOFError 클래스

파일을 끝까지 읽다 보면 더 읽을 게 없어져요. 그런 상황을 Ruby에서는 어떻게 표현할까요? IO 연산 중 파일 끝(end of file)에 도달했을 때 이 EOFError가 일부 연산에서 발생해요. IO 메서드가 두 형태로 존재하는 이유가 여기 있어요. 하나는 파일 끝에 닿으면 nil을 돌려주는 형태, 다른 하나는 EOFError를 던지는 형태죠.

EOFErrorIOError의 하위 클래스예요.

gets처럼 끝에 도달하면 nil을 주는 메서드는 예외 없이 조용히 넘어가지만, readline처럼 꼭 값을 기대하는 메서드는 예외를 던져요. 아래 예시에서 그 차이를 바로 볼 수 있어요.

file = File.open("/etc/hosts")
file.read
file.gets     #=> nil
file.readline #=> EOFError: end of file reached
file.close

출처: Ruby 4.0 API - EOFError

더 알아보기

  • IOErrorEOFError가 상속하는 부모 예외