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를 먼저 배치하면 모든 오류를 가로채므로 이후 분기는 절대 실행되지 않습니다.

쉼표로 여러 예외 클래스를 나열하여 하나의 분기에서 처리할 수도 있습니다:

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실력 점검

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

로직 및 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Ruby 컴파일러