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

Python에서 예외(Exception)를 발생시키는 방법 완벽 가이드

Python에서 예외 발생시키기

Python에서는 raise 키워드를 사용하여 의도적으로 예외를 강제로 발생시킬 수 있습니다. 이는 특정 조건에서 프로그램 실행을 중단하거나, 잘못된 입력값이나 비정상적인 상황을 호출자에게 명확하게 알리고 싶을 때 유용합니다.

raise 문의 기본 문법

raise [Exception [, args [, traceback]]]

각 구성 요소의 의미는 다음과 같습니다.

  • Exception: 발생시킬 예외의 이름입니다. (예: ValueError, TypeError 등)
  • args: 선택 사항으로, 예외에 전달할 인자 값을 나타냅니다.
  • traceback: 선택 사항으로, 해당 예외에 사용되는 트레이스백(traceback) 객체입니다.

예제 1: 메시지와 함께 예외 발생시키기

다음은 사용자가 양수가 아닌 값을 입력했을 때 ValueError를 발생시키는 예제입니다.

#raise_error.py
try:
    i = int(input("Enter a positive integer value: "))
    if i <= 0:
        raise ValueError("This is not a positive number!!")
except ValueError as e:
    print(e)

터미널에서 위 스크립트를 실행해 보겠습니다.

$python raise_error.py
Enter a positive integer: -6

음수를 입력했기 때문에 다음과 같이 출력됩니다.

This is not a positive number!!

예제 2: 인자 없이 예외 발생시키기

예외를 발생시킬 때 별도의 변수나 인자를 전달하지 않고 예외 클래스만 지정할 수도 있습니다. 이 경우 sys.exc_info() 함수를 통해 현재 처리 중인 예외에 대한 상세 정보(예외 타입, 값, 트레이스백 객체)를 확인할 수 있습니다.

# 예외 발생 시 변수나 인자를 전달하지 않는 경우
import sys
try:
    i = int(input("Enter a positive integer value: "))
    if i <= 0:
        raise ValueError
except ValueError as e:
    print(sys.exc_info())

실행 결과:

Enter a positive integer value: -9
(<type 'exceptions.ValueError'>, ValueError(), <traceback object at 0x0000000003584EC8>)

정리

raise 키워드를 활용하면 개발자가 원하는 시점에 명시적으로 예외를 발생시킬 수 있습니다. 메시지를 함께 전달하면 오류 원인을 쉽게 파악할 수 있고, 인자 없이 발생시킨 경우에는 sys.exc_info()로 예외 정보를 확인할 수 있습니다. 이러한 기법을 활용하면 입력값 검증, 비즈니스 규칙 위반 감지 등 다양한 오류 처리 로직을 체계적으로 구현할 수 있습니다.