Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 런타임 오류(Runtime Error)란 무엇일까요?

런타임 오류(Runtime Error)란?

구문 오류(syntax error)는 파이썬 인터프리터가 작성된 코드 자체를 이해하지 못할 때 발생합니다. 반면 런타임 오류(runtime error)는 파이썬이 코드를 이해했음에도 불구하고, 실제로 명령을 수행하는 도중에 문제에 부딪힐 때 발생합니다. 프로그램이 실행을 시작한 후에 나타나기 때문에 '런타임(실행 시간)' 오류라고 부릅니다.

즉, 코드가 구문적으로 완전히 올바르고 구문 오류가 전혀 발생하지 않더라도, 프로그램이 실행된 이후에 오류가 나타날 수 있습니다.

대표적인 런타임 오류의 종류

  • ZeroDivisionError — 숫자를 0으로 나누려 할 때 발생
  • TypeError — 호환되지 않는 자료형끼리 연산할 때 발생 (예: 문자열 + 정수)
  • NameError — 정의되지 않은 변수를 사용할 때 발생
  • IndexError — 리스트의 범위를 벗어난 인덱스에 접근할 때 발생
  • ValueError — 자료형은 맞지만 값이 부적절할 때 발생 (예: 숫자 변환이 불가능한 문자열)

코드 예시로 살펴보기

다음 코드는 구문상 아무 문제가 없어 보이지만, 사용자의 입력값에 따라 런타임 오류가 발생할 수 있습니다.

a = int(input('숫자를 입력하세요: '))
b = int(input('숫자를 입력하세요: '))
c = a * b
print(c)

정상적인 숫자를 입력하면 다음과 같은 결과를 얻습니다.

숫자를 입력하세요: 7
숫자를 입력하세요: 8
56

그러나 사용자가 숫자가 아닌 문자를 입력하면 ValueError라는 런타임 오류가 발생하여 프로그램이 비정상적으로 종료됩니다.

런타임 오류 처리하기: try-except

런타임 오류는 try-except 문을 사용해 미리 대비할 수 있습니다. 오류가 발생할 가능성이 있는 코드를 try 블록에 작성하고, 오류 발생 시 실행할 코드를 except 블록에 작성하면 프로그램이 중단되지 않고 안정적으로 동작합니다.

try:
    a = int(input('숫자를 입력하세요: '))
    b = int(input('숫자를 입력하세요: '))
    print(a * b)
except ValueError:
    print('유효한 숫자를 입력해 주세요.')

이처럼 런타임 오류는 코드 로직이 올바르더라도 실행 환경이나 외부 입력에 따라 언제든 발생할 수 있으므로, 예외 처리를 통해 견고한 프로그램을 작성하는 것이 좋습니다.