다중 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여러 오류 유형에 대해 복구 코드가 동일할 때 이것을 사용합니다.
챌린지
쉬움입력에서 두 줄을 읽어오며, 두 줄 모두 정수여야 합니다. 둘 다 Integer(...)를 사용한 다음 첫 번째 수를 두 번째 수로 나누세요.
별도의 rescue 분기를 사용하여 세 가지 경우를 처리하세요:
ArgumentError→Bad number!출력ZeroDivisionError→Cannot divide by zero!출력TypeError→Wrong 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
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 및 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러