Ruby에서 Exception 처리( begin-rescue-else-ensure-end )

벌써 7월이네요.. 오늘은 매번 코드 작성할때마다 귀찮지만, 뺴먹을 수 없는 중요한 친구에 Exception, 즉 예외처리에 이야기할까 합니다. 거의 정리 차원에서 간단하게 쓰는거니 빠르게 시작하죠.

begin-rescue-else-ensure-end

루비에서 Exception 처리는 begin-rescue-else-ensure-end 형태로 이루어집니다. 코드영역과 예외처리, 예외 이외 상황에 대한 처리, 무조건 처리 구간으로 보시면 좋습니다. 대충 코드로 요약하믄..

class MyLibrary
  class Error < RuntimeError
  end

  class A_ExceptionClass < Error   #Error에 대한 클래스 정의들..
  end

  class B_ExceptionClass < Error
  end
end

[.....]

begin
  # 일반적인 코드 영역, 에러 발생 시 아래  exception으로 바로 넘어감
rescue A_ExceptionClass => a_var
  # Exception 상황  A 를 처리, 데이터는 a_var 에 저장됨
rescue B_ExceptionClass => b_var
  # Exception 상황  B 를 처리, 데이터는 b_var 에 저장됨
else
  # Exception이 raise되지 않은 경우 실행할 코드
ensure
  # Exception 여부와 상관없이 무조건 실행할 코드
end

더 자세한 처리 방법은 Ruby doc(https://ruby-doc.org/core-2.2.0/Exception.html ) 참고해주세욤 :)