Menu
Coddy logo textTech

예외란 무엇인가요?

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

런타임 중에 0으로 나누기, "abc"를 정수로 파싱하기, nil에서 메서드 호출하기와 같이 무언가 잘못되면, 루비는 예외를 발생시킵니다. 프로그램이 중단되고, 루비는 발생한 일과 발생한 위치를 출력합니다.

10 / 0
# ZeroDivisionError: 0으로 나뉨

각 오류의 종류는 고유한 클래스입니다. 몇 가지 일반적인 예시는 다음과 같습니다:

  • ZeroDivisionError: 정수를 0으로 나누는 경우
  • ArgumentError: 메서드에 잘못된 인수가 전달된 경우 (Integer("abc"))
  • NoMethodError: 리시버(receiver)가 가지고 있지 않은 메서드를 호출할 때 발생 (nil.upcase)
  • TypeError: 잘못된 종류의 객체에 대한 연산 ("a" + 1)

모든 예외 클래스에는 .message가 있습니다. 이는 예외가 처리되지 않았을 때 Ruby가 출력하는 사람이 읽을 수 있는 설명입니다. 다음 레슨에서는 프로그램이 계속 실행될 수 있도록 이러한 예외를 포착(catch)하는 방법을 알아봅니다.

challenge icon

챌린지

초급

입력 한 줄(Ruby 표현식 이름)을 읽습니다. Ruby가 해당 표현식에 대해 발생시킬 예외 클래스의 이름을 출력하세요. case 문을 사용하세요 (실제로 예외를 발생시킬 필요는 없습니다):

  • divide-by-zeroZeroDivisionError
  • nil-methodNoMethodError
  • bad-integerArgumentError
  • wrong-typeTypeError
  • 그 외의 경우 → Unknown

입력이 nil-method인 경우, 출력은 NoMethodError입니다.

치트 시트

런타임 중에 문제가 발생하면, Ruby는 예외를 발생시키고(raises an exception) 프로그램이 중단됩니다. 일반적인 예외 클래스는 다음과 같습니다:

  • ZeroDivisionError: 정수를 0으로 나눌 때
  • ArgumentError: 잘못된 인자 (예: Integer("abc"))
  • NoMethodError: 수신 객체에 없는 메서드를 호출할 때 (예: nil.upcase)
  • TypeError: 잘못된 종류의 객체에 연산을 수행할 때 (예: "a" + 1)
10 / 0
# ZeroDivisionError: divided by 0

모든 예외 객체는 사람이 읽을 수 있는 설명을 담은 .message를 가지고 있습니다.

직접 해보기

kind = gets.chomp

# TODO: case kind ... 일치하는 예외 클래스 이름을 출력하세요
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨