본문으로 건너뛰기

UZU Dev LogoUZU Dev LogoUZU-DEV

[Python] 에러와 예외 처리

파이썬 에러와 예외, try~except 구조와 다양한 처리 방법을 정리한 글

2025년 9월 12일

[Python] 에러와 예외 처리 썸네일

1. 에러(Error)란?

프로그램 실행 도중 발생하는 문제를 에러라고 한다.

  • 문법 에러(Syntax Error) : 코드 문법 자체가 잘못되었을 때 발생
  • 런타임 에러(Runtime Error) : 실행 도중 발생하는 오류
# Syntax Error 예시
print("Hello"    # 괄호 닫지 않음

# Runtime Error 예시
print(10 / 0)    # ZeroDivisionError

2. 예외(Exception)란?

런타임 에러 중 처리 가능한 오류를 예외라고 한다. 예외가 발생하면 프로그램이 즉시 중단되므로, 예외 처리를 통해 안정적으로 동작하도록 만든다.


3. try ~ except 기본 구조

try:
    x = int(input("숫자를 입력하세요: "))
    print(10 / x)
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except ValueError:
    print("숫자가 아닙니다.")
  • try : 예외가 발생할 수 있는 코드
  • except : 특정 예외가 발생했을 때 실행할 코드

4. 예외 종류별 처리

try:
    data = [1, 2, 3]
    print(data[5])   # IndexError 발생
except IndexError:
    print("인덱스 범위를 벗어났습니다.")

대표적인 예외 유형

  • ZeroDivisionError : 0으로 나눌 때
  • ValueError : 잘못된 값 입력
  • IndexError : 인덱스 범위 초과
  • KeyError : 존재하지 않는 딕셔너리 키 접근
  • FileNotFoundError : 파일이 없을 때

5. 다중 except와 예외 묶음

try:
    num = int("python")
except (ValueError, TypeError):
    print("잘못된 형 변환입니다.")
  • 여러 예외를 한 번에 묶어서 처리 가능

6. else와 finally

6.1 else

예외가 발생하지 않았을 때 실행된다.

try:
    print("정상 실행")
except:
    print("예외 발생")
else:
    print("예외 없이 끝남")
6.2 finally

예외 발생 여부와 관계없이 반드시 실행된다.

try:
    f = open("example.txt", "r", encoding="utf-8")
    data = f.read()
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")
finally:
    print("파일 처리 종료")

7. 예외 객체와 as

try:
    1 / 0
except ZeroDivisionError as e:
    print("예외 메시지:", e)
  • as e를 사용하면 예외 메시지를 확인 가능

8. 사용자 정의 예외

개발자가 직접 예외 클래스를 정의할 수도 있다.

class NegativeNumberError(Exception):
    pass

def check_positive(num):
    if num < 0:
        raise NegativeNumberError("음수는 허용되지 않습니다.")

try:
    check_positive(-5)
except NegativeNumberError as e:
    print("사용자 정의 예외 발생:", e)

[Python] 에러와 예외 처리