ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 마스터 시리즈 9화 – 예외 처리 구조: try, except, finally의 설계 원칙과 실전 활용
    기술과 산업/언어 및 프레임워크 2025. 5. 12. 19:40
    728x90

    파이썬 예외 처리 구조는 단순 오류 방지를 넘어 프로그램의 안정성과 유지보수성을 높이는 핵심 도구다. 이번 글에서는 try, except, finally의 문법부터, 실무에서 자주 발생하는 예외 처리 패턴과 설계 전략까지 체계적으로 분석한다.


    1. 도입 – 예외 처리는 방어적 프로그래밍의 핵심이다

    실제 서비스 환경에서 예외 처리는 선택이 아닌 필수다.
    아무리 완벽한 코드를 작성하더라도, 외부 시스템, 사용자 입력, 파일 IO, 네트워크 통신 등 다양한 예측 불가능한 변수로 인해 오류는 항상 발생할 수 있다.

    파이썬의 try-except 구조는 오류 발생 시 프로그램이 비정상 종료되지 않도록 방어할 수 있는 가장 중요한 장치다.
    이번 회차에서는 단순 문법을 넘어, 예외 처리 설계의 원칙과 현업에서의 모범 사례를 집중적으로 다룬다.


    2. 본문 – 예외 처리 구조의 이해와 실전 활용

    2.1 기본 예외 처리 구조

    try:
        # 예외 발생 가능 코드
    except ExceptionType:
        # 예외 발생 시 실행할 코드
    

    예시:

    try:
        result = 10 / 0
    except ZeroDivisionError:
        print("0으로 나눌 수 없습니다.")
    
    • ZeroDivisionError는 대표적인 내장 예외 클래스다
    • 발생한 예외가 except 블록에 명시된 예외와 일치할 경우 블록이 실행된다

    2.2 다중 예외 처리

    try:
        value = int(input("숫자를 입력하세요: "))
        print(10 / value)
    except ValueError:
        print("숫자를 입력해야 합니다.")
    except ZeroDivisionError:
        print("0으로 나눌 수 없습니다.")
    
    • 여러 예외를 각각 분리해 명확하게 처리 가능
    • 실무에서는 세분화된 예외 처리가 프로그램의 안정성과 사용자 경험을 개선한다

    2.3 finally 블록

    try:
        file = open("data.txt")
        # 파일 작업
    except FileNotFoundError:
        print("파일이 존재하지 않습니다.")
    finally:
        file.close()
    
    • finally 블록은 예외 발생 여부와 관계없이 반드시 실행된다
    • 파일 닫기, DB 연결 해제 등 자원 정리 작업에 사용된다

    2.4 else 블록

    try:
        result = 10 / 2
    except ZeroDivisionError:
        print("0으로 나눌 수 없습니다.")
    else:
        print("예외 없이 성공적으로 실행되었습니다.")
    
    • 예외가 발생하지 않은 경우에만 실행된다
    • 성공 경로와 예외 경로를 명확히 분리하는 데 유용하다

    2.5 사용자 정의 예외

    실무에서는 상황에 맞게 예외 클래스를 직접 정의하기도 한다.

    class CustomError(Exception):
        pass
    
    def check_value(x):
        if x < 0:
            raise CustomError("음수는 허용되지 않습니다.")
    
    try:
        check_value(-1)
    except CustomError as e:
        print(e)
    
    • Exception 클래스를 상속받아 새로운 예외를 정의
    • 프로젝트의 도메인 오류를 세분화해 가독성과 유지보수성을 높인다

    3. 인사이트 – 예외 처리 설계 원칙

    단순 예외 발생을 잡는 것보다 중요한 것은
    예외 처리 정책을 일관성 있게 정의하는 것이다.

    설계 원칙 설명

    예상 가능한 예외만 처리 불필요하게 except Exception으로 모든 예외를 잡지 않는다
    구체적인 예외 우선 예외 계층 구조 상 가장 구체적인 예외부터 순서대로 처리
    사용자 정의 예외 적극 활용 프로젝트 도메인에 맞는 예외를 만들어 의미를 명확히 전달
    finally로 자원 해제 파일, 네트워크, DB 연결 등 외부 자원은 반드시 정리
    로깅(logging) 습관화 예외 발생 내역을 반드시 기록하여 추후 문제 분석 가능하도록 한다

    실무에서는 try-except-finally 블록을 활용해
    프로그램이 예외 상황에서도 안정적으로 동작하도록 설계하는 것이 기본이다.


    4. 정리

    • 파이썬의 예외 처리 구조는 프로그램을 보호하고 예측 불가능한 오류로 인한 비정상 종료를 방지한다
    • try, except, finally, else 구문을 조합해 다양한 예외 시나리오를 효과적으로 제어할 수 있다
    • 실무에서는 구체적인 예외 정의와 예외 발생 시 책임있는 처리 방식이 요구된다
    • 예외 발생 후 자원 정리와 로깅을 습관화하는 것이 유지보수성 높은 코드를 만드는 핵심이다
    728x90
Designed by Tistory.