왜 if만으로는 부족한가: Python에서 try/except 이해하기
Source: Dev.to

왜 if만으로는 충분하지 않은가
Python으로 팁 계산기를 작성하면서(전체 코드는 제 GitHub에서 확인할 수 있습니다), if 조건을 사용했음에도 불구하고 오류가 발생한다는 것을 깨달았습니다.
그 이유는 if 조건이 형 변환이 끝난 뒤에 실행되지만, 오류는 변환 중에 발생하기 때문입니다.
def get_bill_amount(prompt: str) -> float:
while True:
value = input(prompt).strip()
try:
amount = float(value)
if amount > 0:
return amount
print("Amount must be greater than 0.")
except ValueError:
print("Please enter a valid number.")
- 예상 사용자 입력:
0보다 큰 숫자 - 형 불일치: 사용자가
abc와 같은 문자열을 입력했을 때 - 오류: 프로그램이
ValueError: could not convert string to float와 함께 충돌함
핵심은 float(value)가 위험한 연산이라는 점입니다. 변환에 실패하면 Python은 if 조건을 검사하기도 전에 오류를 발생시킵니다.
value.isdigit()을 사용하면 안전해 보일 수 있지만, 12.5, -3 혹은 공백이 포함된 10과 같은 유효한 입력에서는 동작하지 않습니다. 그래서 try/except가 존재합니다.
경험 법칙
if→ 논리(규칙, 범위, 조건) 검사try/except→ 충돌 방지(형 변환 같은 잘못된 연산)
항상 규칙을 검증할 때는 if를 사용하고, 프로그램이 충돌하지 않도록 보호할 때는 try/except를 사용하세요.