Menu
Coddy logo textTech

다중 rescue 절

Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 45번째.

하나의 begin 블록은 여러 개의 rescue 절을 가질 수 있습니다. Ruby는 위에서 아래로 확인하며 예외 클래스가 일치하는 첫 번째 절을 실행합니다.

begin
  number = Integer(gets.chomp)
  result = 100 / number
  puts result
rescue ArgumentError
  puts "That's not a valid number."
rescue ZeroDivisionError
  puts "Can't divide by zero."
end

순서가 중요합니다: 일반적인 클래스보다 구체적인 클래스를 먼저 나열하세요. StandardError를 가장 앞에 두면 모든 것을 삼켜버려 이후 분기가 전혀 실행되지 않습니다.

쉼표로 구분하여 여러 예외 클래스를 하나의 쉼표로 나열함으로써 한 rescue 블록에서 함께 처리할 수도 있습니다:

begin
  risky_call
rescue ArgumentError, TypeError => e
  puts "Bad input: #{e.message}"
end

여러 오류 유형에 대해 복구 코드가 동일할 때 이것을 사용합니다.

challenge icon

챌린지

쉬움

입력에서 두 줄을 읽어오며, 두 줄 모두 정수여야 합니다. 둘 다 Integer(...)를 사용한 다음 첫 번째 수를 두 번째 수로 나누세요.

별도의 rescue 분기를 사용하여 세 가지 경우를 처리하세요:

  • ArgumentErrorBad number! 출력
  • ZeroDivisionErrorCannot divide by zero! 출력
  • TypeErrorWrong type! 출력

모든 것이 정상적으로 작동하면 Result: <a / b>를 출력하세요 (정수 나눗셈).

입력이 10 / 2인 경우 출력은 Result: 5입니다. 10 / 0인 경우 Cannot divide by zero!입니다. 10 / abc인 경우 Bad number!입니다.

직접 해보기

raw_a = gets.chomp
raw_b = gets.chomp

# TODO: begin ... rescue ArgumentError ... rescue ZeroDivisionError ... rescue TypeError ... end
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 및 흐름의 모든 레슨