PHpullh

PYTHON · 예외처리

warnings 모듈

warnings로 경고를 발생시키고 관리합니다. 에러와 달리 프로그램을 중단하지 않습니다.

예외처리중급warnings경고DeprecationWarning필터

핵심 설명

warnings로 경고를 발생시키고 관리합니다. 에러와 달리 프로그램을 중단하지 않습니다.

Python code

import warnings

# 경고 발생
def deprecated_func():
    warnings.warn(
        "이 함수는 v2.0에서 제거됩니다. new_func()를 사용하세요.",
        DeprecationWarning,
        stacklevel=2
    )
    return "레거시 결과"

# 커스텀 경고 클래스
class PerformanceWarning(UserWarning):
    pass

def slow_query(query: str):
    warnings.warn(
        f"느린 쿼리 감지: {query[:50]}",
        PerformanceWarning,
        stacklevel=2
    )
    return []

# 경고 필터 제어
warnings.filterwarnings("always")  # 모든 경고 표시
result = deprecated_func()
print(f"결과: {result}")

warnings.filterwarnings("error", category=DeprecationWarning)
try:
    deprecated_func()  # 경고가 에러로 변환됨
except DeprecationWarning as e:
    print(f"경고→에러: {e}")

# 특정 경고 무시
warnings.filterwarnings("ignore", category=PerformanceWarning)
slow_query("SELECT * FROM huge_table")
print("경고 무시됨")

학습 팁

stacklevel=2를 설정하면 경고가 호출한 코드 위치를 가리킵니다.

주의할 점

warnings.filterwarnings("error")를 설정한 상태에서 경고를 발생시키면 예외가 발생하므로 주의하세요.

자주 묻는 질문

warnings 모듈란 무엇인가요?

warnings 로 경고를 발생시키고 관리합니다. 에러와 달리 프로그램을 중단하지 않습니다.

warnings 모듈 학습 시 주의할 점은 무엇인가요?

warnings.filterwarnings("error") 를 설정한 상태에서 경고를 발생시키면 예외가 발생하므로 주의하세요.