사용자 정의 예외를 만드는 방법은 무엇인가요?
사용자 정의 예외(Custom Exception)는 프로그램에서 특정 상황에 맞는 고유한 예외 처리를 위해 개발자가 직접 정의하는 예외 클래스입니다.
이를 통해 표준 예외만으로는 표현하기 어려운 오류 상황을 명확하게 구분하고 처리할 수 있습니다.
아래는 사용자 정의 예외를 만드는 방법과 사용 예시를 설명한 내용입니다.
--- 1. 사용자 정의 예외의 필요성 기본적으로 Python은 여러 내장 예외(Exception)를 제공합니다.
하지만 특정 도메인이나 애플리케이션 로직에 맞는 예외를 구분하고 싶을 때, 사용자 정의 예외를 만드는 것이 좋습니다.
예를 들어, 은행 프로그램에서 잔액 부족을 나타내는 예외를 별도로 정의하면, 코드 가독성과 유지보수성이 향상됩니다.
--- 2. 사용자 정의 예외 만드는 방법 1. 예외 클래스 정의 사용자 정의 예외는 보통 `Exception` 클래스를 상속받아 만듭니다.
필요하다면 `ValueError`, `RuntimeError` 등 다른 내장 예외 클래스를 상속받을 수도 있습니다.
```python class MyCustomError(Exception): """나만의 예외를 나타내는 클래스""" pass ``` 2. 생성자나 메서드 정의 (선택 사항) 예외 메시지나 추가 정보를 저장하고 싶으면 `__init__` 메서드를 정의할 수 있습니다.
```python class ValidationError(Exception): def __init__(self, message, code): super().__init__(message) self.code = code ``` --- 3. 예외 사용 예시 ```python class InsufficientBalanceError(Exception): """잔액 부족 예외""" def __init__(self, balance, amount): super().__init__(f"잔액이 부족합니다.
현재 잔액: {balance}, 요청 금액: {amount}") self.balance = balance self.amount = amount def withdraw(balance, amount): if amount > balance: raise InsufficientBalanceError(balance, amount) return balance - amount try: current_balance = 1000 current_balance = withdraw(current_balance, 1500) except InsufficientBalanceError as e: print(f"오류 발생: {e}") ``` --- 4. 정리 - 사용자 정의 예외는 `Exception`을 상속받아 클래스를 만든다. - 필요한 경우 생성자를 오버라이드하여 추가 정보를 담을 수 있음. - 특정 상황에서 `raise`를 이용해 예외를 발생시키고, 일반 예외처럼 `try-except` 구문으로 처리 가능. - 코드의 명확성과 오류 처리의 세분화에 도움을 줌. --- 필요에 맞는 사용자 정의 예외를 만들어 쓰면, 오류 상황을 더 효과적으로 관리할 수 있습니다.