[파이썬] 파이썬 2와 파이썬 3의 예외 처리 및 에러 핸들링 차이

파이썬은 강력한 예외 처리 기능을 제공하여 프로그램에서 발생하는 예외 상황을 적절하게 처리할 수 있습니다. 그러나 파이썬 2와 파이썬 3에서 예외 처리 및 에러 핸들링 방식에는 몇 가지 차이가 있습니다. 이 블로그 글에서는 파이썬 2와 파이썬 3 간의 주요한 예외 처리 및 에러 핸들링 차이점을 살펴보겠습니다.

예외 처리 구문

파이썬 2에서는 try, except, finally 키워드를 사용하여 예외 처리를 구현합니다.

try:
    # 예외가 발생할 수 있는 코드
except ExceptionType as e:
    # 예외 처리 코드
finally:
    # 예외 발생 여부에 상관없이 실행되는 코드

반면에 파이썬 3에서는 as 키워드를 생략하고 Exception 클래스만을 사용하여 예외 처리를 구현합니다.

try:
    # 예외가 발생할 수 있는 코드
except ExceptionType:
    # 예외 처리 코드
finally:
    # 예외 발생 여부에 상관없이 실행되는 코드

예외 타입 처리 방식

파이썬 2에서는 예외 타입을 처리할 때 except 키워드 다음에 에러 타입을 직접 명시합니다.

try:
    # 예외가 발생할 수 있는 코드
except ExceptionType1:
    # 예외 처리 코드
except ExceptionType2:
    # 예외 처리 코드

하지만 파이썬 3에서는 여러 예외를 동시에 처리하고자 할 때, 여러 예외 타입을 괄호로 묶어 처리합니다.

try:
    # 예외가 발생할 수 있는 코드
except (ExceptionType1, ExceptionType2):
    # 예외 처리 코드

예외 메시지 출력 방식

파이썬 2에서는 예외 메시지를 출력하기 위해 as 키워드를 사용하여 예외 객체를 받아옵니다.

try:
    # 예외가 발생할 수 있는 코드
except ExceptionType as e:
    print "예외 발생: ", e

파이썬 3에서는 as 키워드 없이 예외 객체의 정보를 받아와서 출력할 수 있습니다.

try:
    # 예외가 발생할 수 있는 코드
except ExceptionType as e:
    print("예외 발생:", e)

예외 발생 방식

파이썬 2에서는 raise 키워드를 사용하여 예외를 발생시킬 수 있습니다.

raise ExceptionType("예외 발생")

파이썬 3에서는 예외를 발생시킬 때 괄호를 사용하여 예외 객체를 생성해야 합니다.

raise ExceptionType("예외 발생")

결론

파이썬 2와 파이썬 3에서의 예외 처리 및 에러 핸들링 방식에는 몇 가지 차이가 있습니다. 파이썬 3에서는 예외 타입 처리, 예외 메시지 출력 등에 대해 일부 변경이 있기 때문에 주의가 필요합니다. 프로젝트를 이전하거나 파이썬 버전 간 이식성을 고려할 때 이러한 차이점을 고려해야 합니다.