Python에서는 커스텀 예외(Custom Exception)를 정의하고, 해당 예외가 발생할 때 변수를 함께 전달할 수 있습니다. 이를 통해 예외 발생 원인이나 추가 정보를 예외 객체 자체에 담아 전달할 수 있어 디버깅과 오류 처리가 훨씬 편리해집니다.
커스텀 예외 클래스 정의하기
먼저 기본 클래스인 Exception을 상속받는 사용자 정의 예외 ExampleException을 만들고, __init__ 메서드를 정의하여 변수를 저장하도록 구성합니다.
예제 코드
class ExampleException(Exception):
def __init__(self, foo):
self.foo = foo
try:
raise ExampleException("Bar!")
except ExampleException as e:
print(e.foo)
실행 결과
"C:/Users/TutorialsPoint1/~bar.py" Bar!
코드 설명
위 코드의 동작 과정은 다음과 같습니다.
1. 커스텀 예외 정의: ExampleException은 Exception 클래스를 상속받으며, __init__ 메서드를 통해 매개변수 foo를 받아 인스턴스 속성으로 저장합니다.
2. 예외 발생: try 블록 안에서 raise 문을 사용해 ExampleException("Bar!")를 호출하면서 문자열 "Bar!"를 변수로 전달합니다.
3. 예외 처리 및 값 출력: except 블록에서 발생한 예외 객체를 e로 받고, e.foo를 통해 전달된 변수 값에 접근하여 출력합니다.
참고 사항
위 예제의 print e.foo는 Python 2 문법입니다. Python 3 이상에서는 반드시 괄호를 사용하는 print(e.foo) 형태로 작성해야 합니다. 또한 여러 개의 변수를 전달하고 싶다면 __init__ 메서드에 매개변수를 추가하거나, 가변 인자(*args, **kwargs)를 활용하면 됩니다.