ScriptError 클래스

ScriptError 클래스

스크립트를 실행할 수 없어서 생기는 오류들의 상위(superclass) 클래스예요. LoadError, NotImplementedError, SyntaxError가 모두 이 클래스의 하위 타입이에요.

출처: Ruby 4.0 API

본문

주의할 점이 하나 있어요. 이런 ScriptError들은 StandardError가 아니에요. 그래서 일반적인 rescue로는 잡히지 않고, 명시적으로 이 클래스(또는 그 조상인 Exception)를 지정해야만 잡을 수 있어요.

begin
  eval("def")   # SyntaxError 발생
rescue ScriptError
  puts "스크립트 오류를 잡았어요"
end

rescue ScriptError처럼 직접 지정해야 잡히고, 그냥 rescue => e만 쓰면 이 오류들은 통과해 버려요. 스크립트 구문 자체의 문제를 다룰 때를 제외하면 크게 신경 쓸 일은 많지 않지만, 예외 계층 구조상 어디에 속하는지는 알아 두면 좋아요.