본문 바로가기
카테고리 없음

프로그래밍 입문자를 위한 파이썬 예외 처리법 (try except 설명)

by 영끌인 2025. 3. 10.

프로그래밍을 처음 배우는 입문자라면 오류(예외)를 마주치는 일이 많습니다. 파이썬에서는 try except 문을 사용하여 이러한 오류를 효과적으로 처리할 수 있습니다. 이 글에서는 try except 문이 무엇인지, 어떻게 활용하는지, 그리고 예외를 처리할 때 주의할 점을 초보자도 쉽게 이해할 수 있도록 설명합니다.

예외란 무엇인가? (try except의 기본 개념)

프로그래밍을 하다 보면 문법 오류(SyntaxError)뿐만 아니라 실행 중에 발생하는 다양한 오류(예외, Exception)를 만나게 됩니다. 예외는 프로그램이 예상치 못한 상황을 만났을 때 발생하는 것으로, 이를 적절히 처리하지 않으면 프로그램이 강제 종료될 수 있습니다.

📌 파이썬에서 자주 발생하는 예외 유형

  • ZeroDivisionError: 잘못된 값으로 0으로 나누기를 시도할 때
  • TypeError: 잘못된 data type 으로 사용할 때
  • IndexError: 인덱스가 잘못된 리스트나 튜플을 할당하거나 참조할 때
  • KeyError: 사용자가 설정한 키가 딕셔너리에 없을 때
  • ValueError: 잘못된 값을 함수에 전달할 때

이러한 예외를 try except 문을 사용하여 처리하면 프로그램이 중단되지 않고 원하는 방식으로 실행될 수 있습니다.

기본적인 try except 문 사용법

try:
    num = int(input("숫자를 입력하세요: "))
    result = 10 / num  
    print("결과:", result)
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except ValueError:
    print("숫자를 입력해야 합니다.")

위 코드에서 사용자가 0을 입력하면 ZeroDivisionError가 발생하고, 숫자가 아닌 값을 입력하면 ValueError가 발생하여 각각 다른 오류 메시지를 출력하게 됩니다.

여러 개의 예외 처리 및 finally 활용

📌 여러 개의 예외 처리

try:
    lst = [1, 2, 3]
    index = int(input("인덱스를 입력하세요: "))
    print("리스트 값:", lst[index])
except IndexError:
    print("인덱스 범위를 벗어났습니다.")
except ValueError:
    print("숫자를 입력해야 합니다.")

이처럼 except 문을 여러 개 작성하면 특정 오류에 대해 개별적으로 처리할 수 있습니다.

📌 finally 블록 활용

finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드입니다. 파일을 닫거나 데이터베이스 연결을 종료할 때 유용하게 사용할 수 있습니다.

try:
    file = open("example.txt", "r")
    content = file.read()
    print(content)
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")
finally:
    file.close()  # 예외가 발생해도 파일을 닫아줌

finally 블록 덕분에 프로그램이 중단되지 않고 항상 파일이 정상적으로 닫히게 됩니다.

사용자 정의 예외와 예외 발생시키기 (raise 활용)

📌 예제 코드: 특정 조건에서 예외 발생

def check_age(age):
    if age < 0:
        raise ValueError("나이는 0보다 작을 수 없습니다.")
    print("입력된 나이:", age)

try:
    age = int(input("나이를 입력하세요: "))
    check_age(age)
except ValueError as e:
    print("오류 발생:", e)

이 코드에서는 나이가 0보다 작은 경우 ValueError를 직접 발생시키고, 이를 except 문에서 처리하는 방식입니다.

📌 사용자 정의 예외 클래스 만들기

파이썬에서는 기본 제공되는 예외 외에도, 직접 예외 클래스를 만들어 사용할 수 있습니다.

class NegativeNumberError(Exception):
    def __init__(self, message="음수는 입력할 수 없습니다."):
        self.message = message
        super().__init__(self.message)

try:
    number = int(input("양수를 입력하세요: "))
    if number < 0:
        raise NegativeNumberError
except NegativeNumberError as e:
    print("오류 발생:", e)

이제 사용자가 음수를 입력하면 NegativeNumberError가 발생하고, 예외 메시지를 출력하게 됩니다.

결론: 프로그래밍 입문자를 위한 예외 처리 핵심 요약

  • try except 문을 사용하면 프로그램이 갑자기 종료되지 않고 원하는 방식으로 오류를 처리할 수 있습니다.
  • except 문을 여러 개 사용하면 다양한 예외를 개별적으로 처리할 수 있습니다.
  • finally 블록은 오류 발생 여부와 관계없이 항상 실행되는 코드로, 파일 닫기 등의 작업에 유용합니다.
  • raise 키워드를 사용하면 특정 조건에서 직접 예외를 발생시킬 수 있습니다.
  • 사용자 정의 예외 클래스를 만들면 보다 체계적인 오류 처리가 가능합니다.

파이썬을 배우는 초보자라면 예외 처리를 잘 활용하여 더욱 안정적인 프로그램을 개발해 보세요! 🚀