Ruby:
에러 처리하기

방법:

루비는 오류를 처리하기 위해 begin, rescue, ensure, end를 사용합니다. 위험한 코드를 beginend로 감쌉니다. 오류가 발생하면 rescue가 작동합니다.

begin
  # 위험한 코드가 여기에 옵니다.
  puts 10 / 0
rescue ZeroDivisionError => e
  puts "이런! 그건 할 수 없습니다: #{e.message}"
ensure
  puts "오류가 발생하든 안 하든 항상 실행됩니다."
end

출력 예시:

이런! 그건 할 수 없습니다: 0으로 나눔
오류가 발생하든 안 하든 항상 실행됩니다.

깊이 있게 탐구

역사적으로, 프로그래밍 언어의 오류 처리는 상당히 발전해 왔으며, 초기 언어들은 종종 원시적이거나 존재하지 않는 메커니즘을 가지고 있었습니다. 루비의 예외 처리는 파이썬이나 스몰토크와 같은 언어들로부터 영감을 받았습니다.

루비에서 begin-rescue의 대안으로는 메소드 정의에서 rescue를 사용하거나, 비표준 흐름 제어를 위해 throwcatch를 사용하는 것이 있지만, 일반적인 오류 처리에는 사용되지 않습니다.

흥미로운 세부 사항 중 하나: 루비의 예외는 객체입니다 (Exception 클래스 및 그 후손의 인스턴스), 그래서 사용자 정의 오류 클래스를 정의하고 단순히 오류를 로그하는 것 이상을 할 수 있습니다 — 프로그램 전반에 걸쳐 더 견고한 오류 처리를 위한 풍부한 상태를 전달할 수 있습니다.

참고자료

  • 예외와 오류 처리에 관한 루비 문서: ruby-doc.org
  • 루비 오류 처리 모범 사례에 관한 자세한 가이드: thoughtbot.com