[기초#7] 예외 처리(try~except): 에러에도 멈추지 않기
한줄 요약:
프로그램이 에러로 멈추지 않게 하려면?
👉 “예외 처리”로 안전하게 감싸주면 된다! 💪
1. 예외 처리란?
에러(error) 가 발생해도 프로그램이 중단되지 않도록
미리 대비하는 방법이에요.
보통 코드를 실행하다가 에러가 나면
그 자리에서 프로그램이 “뚝!” 멈춰버리죠.
하지만 try ~ except 문을 사용하면
문제가 생겨도 부드럽게 넘어갈 수 있어요.
2. 기본 구조
try:
# 에러가 날 수도 있는 코드
except:
# 에러가 발생했을 때 실행할 코드
3. 예제 1: 나누기에서 에러 방지
try:
x = int(input("숫자 1 입력: "))
y = int(input("숫자 2 입력: "))
print("결과:", x / y)
except:
print("에러 발생! 0으로 나누거나 잘못 입력했어요.")
🪄 실행 예시:
숫자 1 입력: 10
숫자 2 입력: 0
에러 발생! 0으로 나누거나 잘못 입력했어요.
🚫
ZeroDivisionError(0으로 나누기)나ValueError(잘못된 입력)도 막을 수 있어요!
4. 예제 2: 에러 종류별로 다르게 처리
try:
num = int(input("숫자를 입력하세요: "))
print(10 / num)
except ValueError:
print("숫자가 아닌 값을 입력했어요 ❌")
except ZeroDivisionError:
print("0으로는 나눌 수 없어요 ⚠️")
except Exception as e:
print("알 수 없는 에러 발생:", e)
🪄 실행 예시:
숫자를 입력하세요: abc
숫자가 아닌 값을 입력했어요 ❌
5. finally: 무조건 실행되는 코드
try:
f = open("test.txt", "r", encoding="utf-8")
content = f.read()
except FileNotFoundError:
print("파일이 존재하지 않아요 ❌")
finally:
print("프로그램이 종료됩니다.")
🪄 결과:
파일이 존재하지 않아요 ❌
프로그램이 종료됩니다.
finally블록은 에러가 나든 안 나든 항상 실행돼요.
6. else: 에러가 없을 때만 실행
try:
num = int(input("숫자 입력: "))
except:
print("입력 오류!")
else:
print(f"{num}을(를) 입력했어요 ✅")
🪄 결과:
숫자 입력: 7
7을(를) 입력했어요 ✅
7. 자주 하는 실수
| 실수 | 예시 | 수정 |
|---|---|---|
| except 없이 try만 사용 | try: ... | try는 반드시 except와 함께 사용 |
| 에러 종류 모름 | except: | 가능하면 except ValueError처럼 구체적으로 지정 |
| finally 안에서 파일 닫기 누락 | open()만 하고 close() 안 함 | finally 또는 with open() 사용 |
8. 연습문제
# 사용자에게 숫자 두 개 입력받아 나누기
# 잘못된 입력이나 0 입력 시 에러 처리
try:
a = int(input("첫 번째 숫자: "))
b = int(input("두 번째 숫자: "))
result = a / b
except ValueError:
print("숫자만 입력하세요!")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
else:
print(f"결과: {result}")
finally:
print("프로그램이 종료되었습니다.")
🪄 실행 결과 예시:
첫 번째 숫자: 10
두 번째 숫자: 0
0으로 나눌 수 없습니다.
프로그램이 종료되었습니다.
이전 강좌 👈 [기초#6] 파일 입출력: 저장하고 불러오는 법
다음 강좌 👉 [기초#8] 모듈과 패키지: 코드 재활용의 진짜 시작