728x90
파이썬에서는 내장 예외 클래스만으로도 대부분의 오류 처리가 가능하지만, 보다 구체적인 상황을 처리하거나 명확한 예외 메시지를 제공하고 싶을 때는 사용자 정의 예외 클래스를 만드는 것이 좋습니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.
● 사용자 정의 예외란?
사용자가 직접 예외 클래스를 정의하여 특정 조건에서만 발생하도록 만드는 것입니다. 보통 Exception
또는 ValueError
와 같은 기존 예외 클래스를 상속받아 구현합니다.
class NegativeNumberError(Exception):
pass
이제 raise NegativeNumberError("음수는 허용되지 않습니다.")
처럼 직접 예외를 발생시킬 수 있습니다.
● 예외 클래스에 메시지 추가
예외 클래스에 메시지를 전달하려면 __init__
메서드를 오버라이드하고, __str__
메서드로 표현 방식을 지정할 수 있습니다.
class CustomError(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return f"CustomError: {self.message}"
이렇게 하면 예외 발생 시 보다 직관적인 메시지를 출력할 수 있어 디버깅에 유리합니다.
● 실사용 예시
def divide(a, b):
if b == 0:
raise ZeroDivisionError("0으로 나눌 수 없습니다.")
if a < 0 or b < 0:
raise NegativeNumberError("음수 입력 불가")
return a / b
try:
result = divide(-4, 2)
except NegativeNumberError as e:
print(e)
이 예시는 특정 입력 조건에 따라 다른 예외를 발생시키는 구조입니다.
● 마무리
사용자 정의 예외는 프로그램의 동작을 명확히 설명할 수 있는 중요한 수단입니다. 특히 복잡한 로직이나 다양한 오류 상황을 다루는 프로그램에서는 사용자 정의 예외를 통해 문제 발생 원인을 빠르게 파악하고 처리할 수 있습니다.
728x90
'프로그래밍언어 > 파이썬[중급]' 카테고리의 다른 글
[파이썬][중급] Chapter08. contextlib와 with문 커스터마이징 (0) | 2025.05.18 |
---|---|
[파이썬][중급] Chapter07. 예외 처리 패턴과 리팩토링 (0) | 2025.05.18 |
[파이썬][중급] Chapter05. 매직 메서드(__str__, __eq__, __lt__ 등) (0) | 2025.05.18 |
[파이썬][중급] Chapter04. 다중 상속과 MRO 이해 (0) | 2025.05.18 |
[파이썬][중급] Chapter03. 추상 클래스와 ABC 모듈 (0) | 2025.05.18 |