개발노트

고즐의 개발 및 서버 개발 노트

파이썬 예외 처리 실전 정리, try except로 자동화 안정성 높이기

# 파이썬 # 예외 # 처리 # 실전 # 정리

Python 2025.12.17 6일 전 22 회 읽음



예외 처리가 자동화의 생존 조건인 이유

예외 처리는 오류를 막는 기술이 아니라 프로그램을 멈추지 않게 만드는 기술입니다.


자동화 스크립트는 반드시 실패한다

파일이 없거나 네트워크가 끊기거나 API가 응답하지 않는 상황은 반드시 발생합니다.

예외 처리가 없으면 스크립트는 즉시 종료됩니다.

운영 환경에서 이는 곧 장애로 이어집니다.


외주 코드에서 try except가 많은 이유

외주 파이썬 코드는 예외 상황을 전제로 작성됩니다.

정상 흐름보다 실패 흐름을 더 많이 고려합니다.

이 패턴을 이해해야 코드 수정이 가능합니다.


에러와 예외의 차이

에러는 프로그램이 즉시 중단되는 상태입니다.

예외는 처리할 수 있는 오류 상황입니다.

try except는 에러를 예외로 바꾸는 도구입니다.


이번 편의 학습 범위

try except 기본 구조를 다룹니다.

파일, API, 크롤링에서 자주 발생하는 예외를 설명합니다.

운영 기준의 안정화 패턴에 집중합니다.


try except 기본 구조 이해하기

try except는 실패 가능성이 있는 코드를 감싸는 보호막입니다.


기본 try except 구조

try 블록에는 실패 가능성이 있는 코드를 작성합니다.

except 블록에는 실패했을 때 실행할 코드를 작성합니다.

이 구조만으로도 프로그램 중단을 막을 수 있습니다.

try:
    x = int("abc")
except:
    print("에러 발생")


except를 너무 넓게 쓰면 안 되는 이유

모든 에러를 한 번에 잡으면 원인 파악이 어려워집니다.

실무에서는 최소한의 범위로 예외를 처리합니다.

디버깅과 유지보수를 위해 매우 중요합니다.


예외가 발생하는 위치 이해

try 블록 안에서 예외가 발생하면 즉시 except로 이동합니다.

이후 try 블록의 나머지 코드는 실행되지 않습니다.

이 흐름을 정확히 이해해야 로직 오류를 피할 수 있습니다.


예외 처리의 기본 철학

예외는 숨기는 것이 아니라 통제하는 대상입니다.

최소한의 정보는 로그로 남겨야 합니다.

무시하는 예외는 기술 부채가 됩니다.


자주 사용하는 예외 타입

예외 타입을 구분하면 에러 대응 수준이 달라집니다.


ValueError

형변환이나 값 처리에서 가장 자주 발생합니다.

입력값 검증이 부족할 때 나타납니다.

외주 코드에서 매우 흔합니다.


FileNotFoundError

파일이 존재하지 않을 때 발생합니다.

파일 자동화 스크립트에서 필수 대응 대상입니다.

대체 경로나 기본 파일 처리로 이어집니다.


KeyError

딕셔너리에서 없는 키에 접근할 때 발생합니다.

JSON 처리 코드에서 가장 흔한 예외입니다.

get 사용으로 대부분 예방할 수 있습니다.


requests 관련 예외

네트워크 오류나 타임아웃에서 발생합니다.

자동화에서 가장 치명적인 예외 중 하나입니다.

반드시 방어 코드가 필요합니다.


실무에서 많이 쓰는 예외 처리 패턴

패턴을 알면 예외 처리가 단순해지고 코드가 읽히기 시작합니다.


파일 처리 예외 패턴

파일이 없으면 생성하거나 기본값으로 대체합니다.

자동화 스크립트에서 가장 기본적인 패턴입니다.

운영 중단을 막는 핵심 구조입니다.

try:
    with open("data.txt", "r") as f:
        data = f.read()
except FileNotFoundError:
    data = ""


API 요청 예외 패턴

네트워크 오류는 언제든 발생할 수 있습니다.

예외 발생 시 재시도 또는 로그 기록으로 이어집니다.

자동화 안정성의 핵심 지점입니다.

try:
    response = requests.get(url, timeout=5)
except Exception:
    print("API 요청 실패")


JSON 파싱 예외 패턴

JSON 형식이 깨지면 파싱 오류가 발생합니다.

기본 설정으로 대체하는 방식이 일반적입니다.

외주 코드에서 자주 보이는 구조입니다.


크롤링 요소 없음 처리

HTML 구조 변경으로 요소가 없을 수 있습니다.

None 체크와 예외 처리를 함께 사용합니다.

크롤링 자동화 안정화의 핵심입니다.


else finally 활용 시점

else와 finally는 예외 처리의 마무리를 담당합니다.


else 블록의 역할

try 블록이 정상 실행되었을 때만 실행됩니다.

성공 흐름을 명확히 분리할 수 있습니다.

가독성이 좋아집니다.


finally 블록의 역할

예외 발생 여부와 상관없이 실행됩니다.

리소스 정리나 로그 종료 처리에 사용됩니다.

운영 코드에서 매우 중요합니다.


with 문과 finally 관계

with 문은 내부적으로 finally 역할을 수행합니다.

파일이나 네트워크 리소스 관리에 최적입니다.

이해하면 코드가 훨씬 깔끔해집니다.


과도한 finally 사용 주의

불필요한 finally는 코드 복잡도를 높입니다.

정말 정리 작업이 필요할 때만 사용합니다.

실무에서는 최소 사용이 원칙입니다.


운영 기준 예외 처리 설계 원칙

운영 환경에서는 죽지 않는 코드가 잘 짠 코드입니다.


모든 예외를 잡지 않는다

치명적인 예외는 그대로 종료시키는 것이 맞습니다.

모든 예외를 잡으면 문제를 숨기게 됩니다.

통제 가능한 예외만 처리합니다.


로그를 반드시 남긴다

예외 발생 시 최소한의 로그는 필수입니다.

문제 원인을 추적할 수 있어야 합니다.

다음 편의 로그 처리와 바로 연결됩니다.


재시도와 중단 기준

네트워크 오류는 재시도가 의미 있습니다.

설정 오류나 데이터 오류는 즉시 중단이 맞습니다.

이 기준이 자동화 품질을 결정합니다.


사용자에게 남길 정보 구분

내부 로그와 외부 메시지는 구분해야 합니다.

민감한 정보는 외부로 노출하지 않습니다.

보안과 안정성을 동시에 지키는 원칙입니다.


다음 편 예고와 학습 흐름 정리

다음 편에서는 로그 처리로 자동화 스크립트를 운영 수준으로 끌어올립니다.


이번 편에서 반드시 이해해야 할 핵심

예외 처리는 자동화의 생존 장치입니다.

try except 패턴은 운영 환경의 기본입니다.

죽지 않는 코드가 좋은 코드입니다.


실무 자동화 수준 변화

스크립트가 중간에 멈추지 않습니다.

문제가 발생해도 원인 파악이 가능합니다.

운영 자동화로 한 단계 올라갑니다.


다음 편에서 다룰 내용

다음 편에서는 logging 모듈을 다룹니다.

print를 버리고 로그로 전환하는 기준을 설명합니다.

운영 자동화의 마지막 핵심입니다.


추천 연습 방법

일부러 파일을 지우거나 API URL을 틀려보세요.

try except가 어떻게 동작하는지 직접 확인하는 것이 중요합니다.

예외 발생 시 로그를 남기는 습관을 들이세요.

문의답변