4 절 모양
Python 의 예외 처리 — try, except, else, finally 4 절. 대부분 코드는 try/except 만 — 나머지 둘은 특정 상황에서 값어치. else 는 try 가 raise 없이 성공했을 때 실행. finally 는 항상 실행, 예외 여부 무관 — 반드시 일어나야 할 정리에 사용.
왜 별도 else 절
try 본문 다음 코드를 try 블록 안에 두면 except 가 잡을 범위 넓어져 — 거기 버그도 조용히 잡혀. 같은 코드를 else 에 두면 except 가 진짜 위험한 것만 잡고, "다 잘됐어, 다음 단계" 로직이 분리. 작은 명료화, 진짜 버그 예방.
여러 예외 타입 잡기
타입 tuple — except (ValueError, TypeError):. 여러 except 절 가능 — 순서대로 체크, 첫 매치 이김. 예외 객체 바인딩도 — except ValueError as e:.
Bare except 는 거의 항상 잘못
except: (타입 없이) 가 *모든 거* 잡아 — KeyboardInterrupt (Ctrl+C) 와 SystemExit 포함. 그것들에 응답해야 할 코드가 조용히 삼킴. 가장 넓게 가도 except Exception, 이상적으론 기대하는 특정 타입.
원칙: 회복 가능한 실패 모드 처리하는 가장 좁은 예외 타입 잡아. 너무 넓게 = 의도 안 한 버그 숨김. 너무 좁게 = 진짜 실패 미처리. 적절한 grain 은 연산에 따라 — 디폴트
Exception 보다 특정 타입.