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

Python 예외 인수(Argument) 완벽 정리 – 발생 원인을 담아내는 방법

Python에서 예외(Exception)는 문제에 대한 추가 정보를 전달하는 인수(argument)를 가질 수 있습니다. 인수에 어떤 내용이 담기는지는 예외의 종류에 따라 달라지며, except 절에 변수를 지정하면 해당 예외의 인수를 받아낼 수 있습니다.

예외 인수를 받는 기본 문법

try:
    여기에서 작업을 수행합니다;
    ......................
except ExceptionType as Argument:
    여기에서 Argument 값을 출력할 수 있습니다...

단일 예외만 처리하는 코드라면 except 문에서 예외 이름 뒤에 변수를 하나 붙이면 됩니다. 반대로 여러 개의 예외를 동시에 처리해야 한다면, 튜플(tuple) 형태로 묶은 예외 목록 뒤에 변수를 붙여주면 됩니다.

예외 변수에는 무엇이 담길까?

이 변수는 대부분 예외가 발생한 원인을 담고 있는 값을 전달받습니다. 단일 값 하나를 받을 수도 있고, 여러 값을 담은 튜플 형태로 받을 수도 있습니다. 일반적으로 이 튜플에는 다음과 같은 정보가 포함됩니다.

  • 오류 메시지 문자열(error string)
  • 오류 번호(error number)
  • 오류가 발생한 위치(error location)

예제 코드

다음은 단일 예외를 처리하는 예제입니다.

#!/usr/bin/python
# 함수 정의
def temp_convert(var):
    try:
        return int(var)
    except ValueError, Argument:
        print "The argument does not contain numbers\n", Argument

# 위에서 정의한 함수 호출
temp_convert("xyz");

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

The argument does not contain numbers
invalid literal for int() with base 10: 'xyz'

참고: Python 2와 Python 3의 차이

위 예제의 except ValueError, Argument: 구문은 Python 2에서 사용되던 옛 문법입니다. Python 3부터는 쉼표 대신 as 키워드를 사용해야 하므로, 최신 환경에서는 아래와 같이 작성해야 합니다.

def temp_convert(var):
    try:
        return int(var)
    except ValueError as Argument:
        print("The argument does not contain numbers\n", Argument)

temp_convert("xyz")

이처럼 예외 인수를 활용하면 단순히 오류가 발생했다는 사실만이 아니라, 왜 그 오류가 발생했는지 구체적인 원인까지 파악할 수 있어 디버깅과 사용자에게 보여줄 에러 메시지 작성에 큰 도움이 됩니다.