비전공자 파이썬 예외처리 배우는 법, 왜 알아야 할까요
파일 100개를 자동으로 정리하는 스크립트를 돌렸는데, 37번째 파일에서 에러가 나서 전체가 멈춰버린 경험이 있으신가요. 예외처리는 이런 상황에서 프로그램이 멈추지 않고 문제가 있는 부분만 건너뛰거나 기록하게 만드는 방법입니다. 비전공자도 try-except라는 문법 하나만 익히면 자동화 스크립트의 안정성을 크게 높일 수 있습니다.
엑셀 반복 업무를 파이썬으로 자동화하기 시작하면, 처음에는 코드가 잘 돌아가는 것처럼 보입니다. 그런데 실제 현업 데이터는 늘 예상과 다릅니다. 파일이 하나 빠져 있거나, 날짜 형식이 다르거나, 숫자가 들어가야 할 셀에 텍스트가 들어있는 경우가 반드시 생깁니다. 이럴 때 스크립트가 통째로 멈추면, 자동화를 만든 의미가 없어집니다. 비전공 사무직을 위한 코딩 입문 로드맵에서 다룬 것처럼, 결국 자동화는 “내 업무의 반복을 얼마나 안정적으로 대체하는가”가 핵심이고, 예외처리는 그 안정성을 만드는 도구입니다.
에러 메시지와 예외처리, 뭐가 다른가요
에러 메시지는 프로그램이 멈추면서 남기는 기록이고, 예외처리는 그 에러가 나기 전에 미리 대응 방법을 정해두는 코드입니다. 비전공자를 위한 에러 메시지 읽는 법에서 에러 메시지를 겁내지 말고 읽는 법을 다뤘다면, 이번 글은 그 에러가 났을 때 프로그램이 스스로 대처하도록 만드는 단계입니다. 즉 에러 읽기가 “무슨 일이 일어났는지 이해하기”라면, 예외처리는 “다음에 같은 일이 생겨도 멈추지 않기”입니다.
try-except 기본 문법
가장 기본적인 형태는 다음과 같습니다.
try:
숫자 = int(입력값)
except ValueError:
print("숫자로 바꿀 수 없는 값입니다:", 입력값)
숫자 = 0
try 블록 안의 코드를 실행하다가 에러가 나면, 프로그램이 멈추지 않고 except 블록으로 넘어갑니다. 여기서는 ValueError라는 특정 에러 종류를 지정했는데, 이렇게 어떤 에러인지 명시하면 진짜 문제가 되는 에러는 놓치지 않으면서 예상 가능한 에러만 골라서 처리할 수 있습니다.
자동화 스크립트에 예외처리 넣는 실무 예시
엑셀 파일 여러 개를 하나로 합치는 스크립트를 예로 들어보겠습니다. 엑셀 반복 업무, 파이썬으로 10분 만에 끝내기에서 다룬 pandas 취합 작업에 예외처리를 더하면 다음과 같이 바뀝니다.
import pandas as pd
import os
파일목록 = os.listdir("./원본데이터")
결과 = []
오류파일 = []
for 파일명 in 파일목록:
try:
데이터 = pd.read_excel(f"./원본데이터/{파일명}")
결과.append(데이터)
except Exception as e:
오류파일.append((파일명, str(e)))
print(f"{파일명} 처리 중 문제 발생, 건너뜁니다: {e}")
전체데이터 = pd.concat(결과, ignore_index=True)
if 오류파일:
print(f"총 {len(오류파일)}개 파일에서 오류가 발생했습니다.")
for 이름, 사유 in 오류파일:
print(f" - {이름}: {사유}")
이렇게 하면 100개 파일 중 1개가 손상되어 있어도 나머지 99개는 정상적으로 취합되고, 문제가 된 파일 이름과 사유가 따로 기록됩니다. 담당자는 나중에 오류파일 목록만 확인해서 수동으로 처리하면 됩니다. 이 방식은 자동화 스크립트, 만들고 나서가 더 중요합니다에서 강조한 유지보수 관점과도 맞닿아 있습니다. 예외처리로 실패 이력을 남기면, 그 자체가 자동화 로그의 출발점이 됩니다.

어떤 에러를 잡아야 할까요
모든 에러를 except로 다 막아버리면 오히려 위험합니다. 코드 자체에 버그가 있어도 조용히 넘어가 버려서 문제를 발견하기 어려워지기 때문입니다. 실무에서는 자주 발생하는 에러 종류를 파악해두고, 그 종류만 구체적으로 지정하는 것이 안전합니다.
- FileNotFoundError: 파일 경로가 잘못되었거나 파일이 없을 때
- ValueError: 숫자로 변환할 수 없는 값이 들어왔을 때
- KeyError: 딕셔너리나 엑셀 열 이름이 존재하지 않을 때
- PermissionError: 파일이 다른 프로그램에서 열려 있어 접근이 막혔을 때
예를 들어 엑셀 파일이 다른 사람 PC에서 열려 있는 상태로 자동화 스크립트가 접근을 시도하면 PermissionError가 발생합니다. 이 상황은 엑셀 파일 여러 명이 같이 쓸 때, 덮어쓰기 사고 막는 법에서 다룬 공유 파일 문제와도 자주 겹치는데, 예외처리로 이런 상황을 미리 감지하면 재시도 로직이나 알림을 붙일 수 있습니다.
import time
for 시도 in range(3):
try:
데이터 = pd.read_excel("공유폴더/집계.xlsx")
break
except PermissionError:
print(f"파일이 사용 중입니다. {시도+1}번째 재시도, 5초 후 다시 시도합니다.")
time.sleep(5)
else:
print("3회 시도했으나 파일에 접근할 수 없었습니다.")
finally와 예외처리 이후의 처리
try-except 뒤에 finally 블록을 붙이면, 에러가 나든 안 나든 항상 실행해야 하는 코드를 넣을 수 있습니다. 파일을 닫거나, 임시 자원을 정리하거나, 작업 종료를 로그에 남기는 작업에 유용합니다.
try:
파일 = open("결과.txt", "w")
파일.write("작업 완료")
except Exception as e:
print("오류:", e)
finally:
파일.close()
print("파일을 닫았습니다.")
예외처리를 배우고 나면 자연스럽게 다음 단계로 이어지는 질문이 생깁니다. “이 에러가 왜 반복해서 발생하는지 원인 데이터를 살펴봐야겠다”는 생각이 들면, 비전공자를 위한 데이터 클렌징 입문에서 다룬 원본 데이터 정리 절차를 함께 보시면 도움이 됩니다. 예외처리는 증상을 다루는 방법이고, 데이터 클렌징은 원인을 다루는 방법이기 때문입니다.
학습 순서 제안
파이썬 문법을 처음부터 순서대로 다 배울 필요는 없습니다. 실무에서는 다음 순서로 익히는 것이 효율적입니다.
- 반복문과 조건문으로 기본 로직을 만든다
- 함수로 반복되는 코드를 정리한다
- 자동화 스크립트를 실제 업무 데이터로 돌려보며 어디서 에러가 나는지 파악한다
- 자주 나는 에러 종류에 맞춰 try-except를 하나씩 추가한다
예외처리는 이론으로 외워서는 잘 늘지 않습니다. 실제로 스크립트를 돌리다가 에러를 만나고, 그 에러를 잡아보는 경험이 쌓여야 감이 생깁니다. 처음부터 완벽한 예외처리를 목표로 하기보다는, 자주 마주치는 에러 한두 가지부터 하나씩 처리해보는 것을 권합니다.
파이썬으로 업무 자동화를 시작한 지 얼마 안 된 실무자라면, 예외처리 문법 하나만 익혀도 스크립트를 실제 현업에 믹고 맡길 수 있는 수준으로 한 단계 끌어올릴 수 있습니다. 픽셀앤코드는 비전공자 실무자를 대상으로 한 코딩·자동화 교육을 진행하며, 각 회사의 실제 반복 업무 데이터를 예제로 활용해 예외처리를 포함한 실무형 스크립트 작성법을 함께 다루고 있습니다.