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

파이썬 예외 메시지를 캡처하고 출력하는 다양한 방법

파이썬에서는 프로그램 실행 중 발생하는 오류(예외) 메시지를 여러 가지 방식으로 캡처하고 출력할 수 있습니다. 이 글에서는 두 가지 대표적인 방법을 코드 예제와 함께 살펴보고, 최신 파이썬 3 환경에서의 권장 방식까지 함께 안내합니다.

1. 예외 객체의 message 속성 사용하기

첫 번째 방법은 except 블록에서 전달받은 예외 객체(e)의 message 속성을 그대로 출력하는 것입니다.

예제

try:
a = 7/0
print float(a)
except BaseException as e:
print e.message

출력 결과

integer division or modulo by zero

위 코드에서는 숫자를 0으로 나누려다 ZeroDivisionError가 발생하고, except 블록이 이 예외를 잡아 "integer division or modulo by zero"라는 메시지를 화면에 출력합니다.

2. sys 모듈의 exc_value 속성 사용하기

두 번째 방법은 sys 모듈을 임포트한 뒤, sys.exc_value 속성을 통해 현재 처리 중인 예외의 값을 가져오는 방식입니다.

예제

import sys

def catchEverything():
try:
a = 'sequel'
b = 0.8
print a + b
except Exception as e:
print sys.exc_value

catchEverything()

출력 결과

cannot concatenate 'str' and 'float' objects

이 예제에서는 문자열(str)과 실수(float)를 더하려다 TypeError가 발생하며, catchEverything() 함수 내부의 except 블록이 해당 예외를 잡아 에러 메시지를 출력합니다.

참고: 파이썬 3에서의 예외 메시지 출력

위 예제들은 파이썬 2 기준으로 작성된 코드입니다. 파이썬 3에서는 e.message나 sys.exc_value가 더 이상 지원되지 않으므로, 내장 함수인 str() 또는 repr()을 사용하는 것이 표준적인 방법입니다.

try:
a = 7 / 0
except Exception as e:
print(str(e)) # division by zero
print(repr(e)) # ZeroDivisionError('division by zero')

또한 traceback 모듈을 활용하면 스택 트레이스 전체를 출력할 수 있어, 원인 분석과 디버깅에 큰 도움이 됩니다. 상황에 맞는 방법을 선택해 예외 메시지를 효과적으로 관리해 보세요.