Python 초보자를 위한 try except 전략 – 예외 처리로 디버깅까지 쉽게!
Python을 막 배우기 시작했다면, try except
구문을 마주치는 순간 당황하게 됩니다. "무슨 클래스 이름을 외워야 하지?", "이걸 언제 써야 하지?" 같은 고민이 들 수 있죠. 이 글에서는 Python 예외 처리의 핵심 개념과, 초보자를 위한 try except 전략을 차근차근 설명합니다.
왜 Python 예외 처리가 중요한가요?
코드를 실행하다 보면 항상 예상대로 동작하는 건 아닙니다. 사용자가 잘못된 입력을 하거나, 파일이 없거나, 네트워크가 끊기거나... 이럴 때 프로그램이 그대로 멈춰버리면 사용자 경험은 망가지겠죠.
바로 이럴 때 필요한 것이 Python의 예외 처리 (try except) 구문입니다.
예외 처리의 목적은 단 하나: 오류가 나도 프로그램이 안전하게 계속 작동하게 하는 것입니다.
try except는 어떻게 생겼을까?
try:
# 문제가 생길 수 있는 코드
except 예외클래스 as e:
# 문제가 생겼을 때 할 일
예:
try:
result = 10 / 0
except ZeroDivisionError as e:
print("0으로 나눌 수 없습니다:", e)
여기서 핵심은 ZeroDivisionError
라는 예외 클래스입니다. 이 클래스가 바로 어떤 종류의 오류인지 나타내는 '이름표'죠.
예외 클래스란 무엇이고 꼭 외워야 하나요?
많은 Python 초보자들이 이런 질문을 합니다:
"이 많은 예외 클래스, 다 외워야 하나요?"
정답은 아니요!
실제 개발자들도 모든 예외 클래스를 외우지 않습니다. 대신 자주 쓰는 몇 가지 예외 클래스만 익숙해지고, 나머지는 문제가 발생했을 때 에러 메시지를 보고 사용합니다.
예:
FileNotFoundError: [Errno 2] No such file or directory: 'none.txt'
그럼 바로:
except FileNotFoundError:
이렇게 쓰는 거죠.
자주 쓰는 Python 예외 클래스 TOP 7
예외 클래스 | 언제 발생하나? |
---|---|
ValueError |
잘못된 값일 때 |
TypeError |
타입이 안 맞을 때 |
IndexError |
리스트 범위를 벗어날 때 |
KeyError |
딕셔너리에 없는 키일 때 |
ZeroDivisionError |
0으로 나눌 때 |
FileNotFoundError |
파일이 없을 때 |
Exception |
모든 일반 오류의 부모 |
이 정도만 익혀도 대부분의 Python 예외 처리 상황에 대응할 수 있습니다.
try except, 초보자 전략으로 이렇게 익숙해지세요!
- 모르면 일단 Exception으로 감싸세요.
try:
dangerous_code()
except Exception as e:
print("문제가 생겼습니다:", e)
-
에러 메시지를 보고 필요한 예외 클래스를 구체화하세요.
-
IDE(코드 에디터)의 자동완성을 믿으세요. 대부분 추천해줍니다.
-
같은 문제를 여러 번 겪으면 자연스럽게 익힙니다.
예외 처리는 디버깅의 친구입니다
Python 예외 처리는 단순히 에러를 막는 도구가 아니라, 에러를 추적하고 원인을 찾는 디버깅의 강력한 도구입니다.
예외 메시지는 보통 다음처럼 나옵니다:
Traceback (most recent call last):
File "main.py", line 2, in <module>
x = 10 / 0
ZeroDivisionError: division by zero
이걸 보면 파일명, 라인 번호, 오류 타입까지 정확히 알 수 있죠. 따라서 예외 처리를 잘 쓰면 디버깅도 쉬워집니다.
추가 예외 클래스 – StopIteration
StopIteration
은 반복 가능한 객체(iterator)가 더 이상 반환할 항목이 없을 때 발생하는 예외입니다. 일반적인 for
루프에서는 자동으로 처리되기 때문에 신경 쓰지 않아도 되지만, next()
함수를 사용할 때는 종종 직접 다뤄야 합니다.
예:
it = iter([1, 2])
print(next(it)) # 1
print(next(it)) # 2
print(next(it)) # StopIteration 발생
혹은 다음과 같은 코드에서:
try:
category = next(cat for cat in all_categories if cat.slug == category_slug)
except StopIteration:
pass # 아무 것도 안 함
이 경우, 해당 slug를 가진 category가 없으면 아무 것도 하지 않고 통과하는 용도로 쓰인 것입니다. 코드 흐름을 멈추지 않기 위한 최소한의 방어라고 볼 수 있습니다.
마무리 – Python 예외 처리, 처음엔 어렵지만 금방 익숙해집니다
처음부터 예외 클래스를 다 외우거나, 완벽한 예외 처리를 할 필요는 없습니다. 대신 문제 상황을 인지하고, try except
로 감싸고, 에러 메시지를 분석하는 습관부터 들이세요.
Python 예외 처리는 프로그램을 더 튼튼하게 만들고, 나중에 문제를 찾기도 쉽게 해줍니다. 초보자라면 완벽함보다 실전에서의 생존력이 더 중요합니다. try except
는 그 첫걸음이 될 거예요.
다음 편에서는 try except else finally
구조까지 확장된 예외 처리 흐름에 대해서도 설명드릴게요! 😊
Add a New Comment