본문으로 건너뛰기
Python 기초집LESSON 14

예외 처리: try, except, finally

난이도입문
예상 시간30분
선수지식이전 강의

14강. 예외 처리: try, except, finally

1. 이번 강의에서 해결할 문제​

사용자 입력과 파일은 언제든 잘못될 수 있습니다. 모든 오류를 숨기지 않고 복구 가능한 문제만 구체적으로 처리해 이해 가능한 메시지를 제공합니다.

2. 학습 목표​

3. 핵심 개념​

예외가 발생하면 현재 흐름을 중단하고 맞는 except를 찾습니다. else는 오류가 없을 때, finally는 성공 여부와 상관없이 실행됩니다. except Exception으로 모두 숨기면 프로그래밍 오류도 정상처럼 보일 수 있습니다.

4. 단계별 코드 예시​

파일 경로: C:\dev\game-log-analyzer\battle_analyzer\io.py

battle_analyzer/io.py
from pathlib import Path


def read_damage_lines(path: Path) -> list[int]:
try:
text = path.read_text(encoding="utf-8")
damages = [int(line) for line in text.splitlines() if line.strip()]
except FileNotFoundError as error:
raise ValueError(f"입력 파일을 찾을 수 없습니다: {path}") from error
except ValueError as error:
raise ValueError("피해량은 한 줄에 하나의 정수여야 합니다.") from error
else:
return damages
finally:
print(f"입력 확인 완료: {path}")

파일 경로: C:\dev\game-log-analyzer\main.py

main.py
from pathlib import Path
from battle_analyzer.io import read_damage_lines

try:
print(read_damage_lines(Path("data/damages.txt")))
except ValueError as error:
print(f"분석 실패: {error}")
PowerShell · 실행
py -3.13 .\main.py

5. 코드가 동작하는 이유​

낮은 수준의 파일·변환 오류를 사용자 의미의 ValueError로 바꾸고 from error로 원인을 연결합니다. 호출자는 하나의 공개 오류 형식을 처리합니다. finally는 예외가 다시 발생해도 실행됩니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

예외 처리: try, except, finally 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“예외 처리: try, except, finally”의 위험한 선택을 피하려면 어떤 원칙을 적용해야 하나요?
  2. 문제 2“예외 처리: try, except, finally” 실습 중 ‘빈 except 사용’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

14강. 예외 처리: try, except, finally 미완료 상태