Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby 예외 계층 구조 이해

예외는 Ruby의 클래스일 뿐입니다. 예외 예외 계층은 Exception에서 상속되는 모든 클래스로 구성됩니다.

다음은 Ruby 2.1의 표준 라이브러리에 대한 예외 계층입니다.

Exception
  NoMemoryError
  ScriptError
    LoadError
    NotImplementedError
    SyntaxError
  SecurityError
  SignalException
    Interrupt
  StandardError -- default for rescue
    ArgumentError
      UncaughtThrowError
    EncodingError
    FiberError
    IOError
      EOFError
    IndexError
      KeyError
      StopIteration
    LocalJumpError
    NameError
      NoMethodError
    RangeError
      FloatDomainError
    RegexpError
    RuntimeError -- default for raise
    SystemCallError
      Errno::*
    ThreadError
    TypeError
    ZeroDivisionError
  SystemExit
  SystemStackError

실용적 사용

예외를 클래스 트리로 정리하는 이유는 유사한 유형의 예외를 쉽게 구출할 수 있기 때문입니다.

예를 들어 다음 코드를 고려하십시오.

begin
  do_something
rescue StandardError => e
end

이렇게 하면 StandardError뿐만 아니라 그로부터 상속되는 모든 예외도 구출됩니다. 당신이 관심을 가질 만한 거의 모든 예외가 발생합니다.

자신의 코드에서 모든 사용자 정의 예외가 단일 기본 클래스에서 상속되도록 할 수 있습니다.

module MyLib

  class Error < StandardError
  end

  class TimeoutError < Error
  end

  class ConnectionError < Error
  end

end

...

begin
  do_something
rescue MyLib::Error => e
  # Rescues any of the exceptions defined above
end