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 ) 참고해주세욤 :)