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()로 예외 정보를 확인할 수 있습니다. 이러한 기법을 활용하면 입력값 검증, 비즈니스 규칙 위반 감지 등 다양한 오류 처리 로직을 체계적으로 구현할 수 있습니다.