Ruby에서 예외 처리

2020-12-16 hit count image

Ruby에서 예상치 못한 에러가 발생하였을 때, 프로그램이 종료되지 않게 하기 위해 예외 처리를 하는 방법에 대해서 알아봅시다.

개요

프로그램을 작성하다보면, 우리가 예성하지 못한 에러가 발생하기도 합니다. 이런 에러가 발생을 하면, 프로그램이 의도치 않게 종료됩니다. 예외 처리는 이렇게 우리가 예상치 못한 에러가 발생하였을 때, 프로그램이 종료되지 않게 해 줍니다.

그럼 Ruby에서 예외 처리를 하는 방법에 대해서 살펴봅시다.

예외 처리

보통 다른 언어에서는 try-catch 구문을 사용하여 예외 처리를 합니다. 하지만 Ruby에서 예외 처리를 하기 위해서는 begin-rescue-end 구문을 사용합니다.

begin
  # 예외가 발생할 만한 부분
rescue
  # 예외 처리
else
  # 예외가 발생하지 않은 경우의 처리
ensure
  # 마지막으로 실행할 처리
end

위와 같이 beginrescue 사이에는 우리가 예상치 못한 에러가 발생할 만한 부분을 작성합니다. 이곳에서 예외가 발생하면 rescueelse 사이에 구문이 실행되고, 마지막으로 ensureend 구문이 실행됩니다.

만약 beginrescue사이에서 에러가 발생하지 않는 다면, elseensure 사이에 구문과 ensureend사이에 구문이 실행됩니다.

디버깅 변수

Ruby에서는 에러가 발생하여 예외 처리 부분이 실행되면, 다음과 같은 변수가 자동 할당됩니다.

  • $!₩: 마지막으로 일어난 예외와 관련된 정보
  • [email protected]: 마지막으로 일어난 예외의 위치와 관련된 정보

예제

다음과 같이 예외 처리를 사용할 수 있습니다.

puts "[Search a file with file name]"
begin
  print "file name: "
  file_name = gets.chop
  puts File.ftype(file_name)
rescue
  puts "Error!!"
  puts "#{[email protected]}"
  puts "#{$!}"
end

위에 예제를 조금 자세히 살펴봅시다.

file_name = gets.chop

검색하고자 하는 파일 이름을 gets 메서드를 통해 사용자로부터 입력받습니다. 입력받은 문자열을 chop을 사용하여 개행 문자(\n)를 제거합니다.

puts File.ftype(file_name)

사용자로 부터 입력 받은 파일 이름을 Fileftype 메서드를 통해 파일 타입을 가져옵니다.

[Search a file with file name]
file name: example.txt
file

실제로 존재하는 파일을 입력한다면 위와 같이 파일의 종류를 반환합니다. 하지만, 존재하지 않는 파일의 이름을 입력한다면 에러가 발생합니다.

rescue
  puts "Error!!"
  puts "#{[email protected]}"
  puts "#{$!}"
end

에러가 발생한다면, rescueend 사이에 구문이 실행되며 화면에는 Error!!라는 문자가 표시되며, 발생한 위치에 대한 정보([email protected])와 에러에 대한 정보($!)가 표시됩니다.

Error!!
No such file or directory @ rb_file_s_ftype - test
["./index.rb:5:in `ftype'", "./index.rb:5:in `<main>'"]

완료

이것으로 Ruby에서 예외 처리를 사용하는 방법에 대해서 알아보았습니다. 이제 begin-rescue를 사용하여 프로그램이 의도치 않게 종료되는 것을 방지해 보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

책 홍보

저도 블로그를 시작한지 1년만에...책을 다 써봅니다...인생에서 이런 날도 오는군요...타국에서 책 출판도 할 수 있고, 참 좋은 세상입니다.

이번에 쓴 책은 스무디 한 잔 마시며 끝내는 React Native입니다. 다양한 예제를 통해 리액트 네이티브를 공부할 수 있도록 구성해 보았습니다. 또한 설치부터 배포까지 실전에서도 사용할 수 있는 내용들을 담고 있습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
Posts