코드를 완벽하게 짜는 건 불가능하지만, 예외 처리를 잘하면 ‘망하는’ 코드는 피할 수 있어요.
안녕하세요, 요즘 파이썬으로 개인 프로젝트를 하나씩 만들어보고 있는 개발자 지망생입니다. 최근에 파일 처리 관련 코드를 짜다가 프로그램이 갑자기 멈춰버리는 일이 있었는데요. 알고 보니 예외 처리를 하지 않아서 생긴 문제였더라고요. 그 일을 계기로 ‘예외 처리’에 대해 다시 공부하게 되었고, 오늘은 그 내용을 여러분과 공유해보려고 해요. 저처럼 작은 실수로 전체 프로그램이 멈추는 일을 방지하고 싶다면, 이 글을 끝까지 읽어보시길 추천드려요!
예외 처리가 중요한 이유
파이썬 예외 처리 기본 문법
try-except
구문을 사용합니다. 추가적으로 else
와 finally
키워드를 조합해 다양한 흐름을 구성할 수 있어요.
구문 | 설명 |
---|---|
try | 예외가 발생할 가능성이 있는 코드를 작성 |
except | 예외가 발생했을 때 실행할 코드 |
else | 예외가 발생하지 않았을 때 실행 |
finally | 예외 발생 여부와 관계없이 항상 실행 |
자주 발생하는 예외와 대응법
- ZeroDivisionError: 숫자를 0으로 나눌 때 발생
- FileNotFoundError: 존재하지 않는 파일을 열려고 할 때
- TypeError: 잘못된 자료형을 연산하거나 함수에 전달할 때
- KeyError: 딕셔너리에서 존재하지 않는 키를 사용할 때
사용자 정의 예외 클래스 만들기
Exception
을 상속받아 정의하며, 주로 특정 조건이 만족되지 않을 때 사용자 친화적인
메시지를 출력하기 위해 사용하죠.
class CustomError(Exception):
def __init__(self, message):
super().__init__(message)
def validate_age(age):
if age < 0:
raise CustomError("나이는 음수가 될 수 없습니다.")
try:
validate_age(-5)
except CustomError as e:
print(f"예외 발생: {e}")
예외 처리 실수 피하기 팁
잘못된 예외 처리 | 더 나은 방법 |
---|---|
모든 예외를 except로 잡기 | 구체적인 예외만 처리하기 |
except 후에 아무 내용 없이 pass | 로그 출력 또는 사용자 안내 메시지 작성 |
try 범위가 너무 넓음 | 예외가 발생할 가능성이 높은 코드만 감싸기 |
마무리 및 요약 정리
- 예외 처리는 코드 안정성을 위한 필수 요소
- try-except 구문은 기본, else와 finally도 적극 활용
- 자주 발생하는 예외를 미리 인지하고 준비하자
- 사용자 정의 예외는 코드의 가독성과 유지보수성 향상에 도움
예외 처리는 프로그램이 비정상적으로 종료되지 않도록 보호하고, 사용자에게 유용한 정보를 제공하기 위해 필수입니다.
코드의 안정성과 사용자 경험을 위해 필수적으로 처리해야 합니다.
기본적으로는 가능하지만, 필요에 따라 else, finally 블록도 함께 사용하는 것이 좋습니다.
예외 발생 여부와 무관하게 실행할 코드가 있다면 finally 블록을 반드시 활용하세요.
가능하지만 비추합니다. 구체적인 예외 타입을 명시하는 것이 더 안전합니다.
모든 예외를 다 잡다 보면 버그의 원인을 놓치기 쉬워요. TypeError, ValueError 등 구체적으로 작성하는 게 좋아요.
자원 정리나 로그 기록처럼 예외 발생 여부와 관계없이 실행돼야 할 코드가 있을 때 사용합니다.
파일 닫기, DB 연결 종료 등은 finally에 넣어두면 확실합니다.
직접 예외를 발생시키고 싶을 때 사용합니다. 사용자 정의 예외 처리에도 자주 사용되죠.
필요한 조건에서 직접 에러를 발생시켜야 할 때
raise
를 쓰면 좋아요.
가능은 하지만, 내부 시스템 정보나 스택 트레이스를 노출하지 않도록 주의해야 합니다.
보안 이슈가 있을 수 있으니 사용자에겐 친절한 메시지를, 로그에는 상세 정보를 남기세요.
여기까지 읽어주셔서 정말 감사해요! 예외 처리라는 게 처음엔 조금 까다롭고 복잡하게 느껴질 수 있지만, 몇 번만 연습해보면 금방 익숙해지거든요. 특히 실전에서 오류 한두 번 겪어보고 나면, “아 이래서 예외 처리가 필요하구나!”하고 절실히 느끼게 되죠. 여러분도 오늘 배운 내용 바탕으로 코딩할 때 조금 더 자신감을 가지셨으면 좋겠어요. 앞으로도 함께 차근차근 성장해가요.