티스토리 뷰

Ruby & Rails

Ruby 처음 배우기 : 예외

조묵헌 2018. 5. 11. 12:38

예외 객체

예외 객체는 Exception 클래스와 그 서브 클래스의 인스턴스입니다.

  • Exception
    • NoMemoryError
    • ScriptError
      • LoadError
      • NotImplementedError
      • SyntaxError
    • SecurityError
    • SignalException
    • StandardError
      • ArgumentError
      • EncodingError
      • FiiberError
      • IndexError
      • IOError
      • LocalJumpError
      • NameError
      • RangeError
      • RegexpError
      • RuntimeError
      • SystemCallError
      • ThreadError
      • TypeError
      • ZeroDivisionError
    • SystemExit
    • SystemStackError

예외 제어

예외 발생 : raise의 인수로 지정한 문자열을 메시지로 해서 RuntimeError를 발생시킵니다. 첫 인수로 예외 클래스를 지정할 경우, 두번째 인수로 메시지를 지정합니다.

예외 처리에는 begin...rescue...end 구문을 사용합니다.

# 예외 발생시키기
raise "error!"
raise StandardError, "error!"

# 예외처리
begin
  # 예외가 발생할 가능성이 있는 구문
  file = File.open('text.txt')
rescue => e
  # 발생한 예외를 보완 처리
  # 예외 객체를 변수 e에 대입
  puts "Error #{e.class}!"
else
  # 예외가 발생하지 않은 경우 실행되는 처리
ensure
  # 예외 유무에 상관없이 실행시킬 구문
  file.close if file
end

예외 객체의 메서드

# 예외 정보를 취득하기 위한 예외 객체의 메소드
e.class        #=> StandardError
e.message    #=> "error message"
e.backtrace    #=> 콜스택 배열

대역 탈출

다중 내포 관계에 있는 처리에서 한번에 탈출하는 용도로 사용됩니다.

catch/throw : catch로 지정한 블록 내부에서 throw를 호출하면 catch 위치로 돌아갈수 있습니다.

catch :triple_loop do
  loop do
    puts 'one'

    loop do
      puts 'two'

      loop do
        puts 'three'

        throw :triple_loop
      end
    end
  end
end

'Ruby & Rails' 카테고리의 다른 글

Ruby 처음 배우기 : Mixin  (0) 2018.05.11
Ruby 처음 배우기 : Module  (0) 2018.05.11
Ruby 처음 배우기 : 상속  (0) 2018.05.11
Ruby 처음 배우기 : Class  (0) 2018.05.11
Ruby 처음 배우기 : Block & Yield  (0) 2018.05.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함