본문 바로가기

[Python] 42강 예외 처리 (try / except)로 프로그램 안전하게 만들기

@도마22026. 1. 11. 18:00
728x90


이 강의는 파이썬 강의 42강입니다.
이전 강의에서는 파일 + 리스트·딕셔너리 조합으로
데이터를 구조화해 사용하는 방법을 배웠습니다.
이번 강의에서는 프로그램이 에러로 갑자기 멈추지 않도록 만드는 방법,
즉 예외 처리(try / except)를 배웁니다.


왜 예외 처리가 필요한가

지금까지 작성한 코드들은
조건이 조금만 어긋나도 바로 에러가 납니다.

예를 들면:

  • 숫자가 아닌 값을 숫자로 바꾸려 할 때
  • 존재하지 않는 파일을 열 때
  • 딕셔너리에 없는 키를 사용할 때

이런 상황에서
프로그램이 죽지 않게 막는 장치
바로 예외 처리입니다.


1️⃣ 예외 처리 기본 구조

예외 처리의 기본 형태는 다음과 같습니다.

try:
    실행할 코드
except:
    에러가 났을 때 실행할 코드

의미는 아주 단순합니다.

일단 시도해보고 에러가 나면 이쪽으로 온다


2️⃣ 숫자 변환 예제

아주 흔한 에러 상황입니다.

try:
    num = int(input("숫자를 입력하세요: "))
    print(num)
except:
    print("숫자가 아닙니다.")

에러가 나도
프로그램이 멈추지 않습니다.


3️⃣ 파일 처리에서의 예외 처리

파일이 없을 수도 있는 상황입니다.

try:
    with open("data.txt", "r") as f:
        content = f.read()
        print(content)
except:
    print("파일을 찾을 수 없습니다.")

실전에서는
파일 예외 처리가 거의 필수입니다.


4️⃣ 예외 처리 범위는 최소로

try 안에는
에러가 날 가능성이 있는 코드만 넣는 게 좋습니다.

❌ 너무 넓은 범위

try:
    a = int(input())
    b = int(input())
    print(a + b)
except:
    print("에러")

⭕ 필요한 부분만

try:
    a = int(input())
    b = int(input())
except:
    print("입력이 잘못되었습니다.")

5️⃣ 특정 에러만 처리하기

모든 에러를 잡는 것보다
특정 에러만 처리하는 게 좋을 때도 있습니다.

try:
    num = int("abc")
except ValueError:
    print("숫자로 변환할 수 없습니다.")

6️⃣ else 사용하기

에러가 없을 때만
실행되는 코드입니다.

try:
    num = int(input("숫자 입력: "))
except:
    print("에러 발생")
else:
    print("입력한 숫자:", num)

7️⃣ finally 사용하기

에러가 나든 말든
무조건 실행되는 코드입니다.

try:
    f = open("test.txt", "r")
    print(f.read())
except:
    print("파일 에러")
finally:
    f.close()

자원 정리에 자주 사용됩니다.
(요즘은 with가 더 많이 쓰입니다)


8️⃣ 실습 예제

아래 조건을 만족하는 프로그램을 만들어보세요.

  • 숫자 2개 입력
  • 숫자로 변환 시도
  • 에러가 나면 메시지 출력
  • 정상일 때만 합 출력
더보기
try:
    a = int(input("첫 번째 숫자: "))
    b = int(input("두 번째 숫자: "))
except:
    print("숫자만 입력하세요.")
else:
    print("합:", a + b)

이번 강의 핵심 정리

  • try / except는 에러를 처리한다
  • 에러가 나도 프로그램이 멈추지 않는다
  • 특정 에러만 골라서 처리할 수 있다
  • else, finally로 흐름을 세밀하게 제어할 수 있다

728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차