Python을 배워보자/8. 예외 처리

파이썬 예외 처리 다양한 예외 종류

_Blue_Sky_ 2024. 9. 25. 18:54
728x90
728x90

파이썬 예외 처리: 다양한 예외 종류와 상세 설명

파이썬 예외 처리의 중요성

파이썬 프로그램을 작성하다 보면 예상치 못한 오류 상황에 직면하게 됩니다. 이러한 오류를 효과적으로 처리하지 않으면 프로그램이 비정상적으로 종료되거나, 예상치 못한 결과를 초래할 수 있습니다. 파이썬의 예외 처리 메커니즘은 이러한 상황을 방지하고 프로그램의 안정성을 높이는 데 필수적인 역할을 합니다.

예외란 무엇인가?

예외(Exception)는 프로그램 실행 중 발생하는 오류 또는 예외적인 상황을 나타내는 객체입니다. 파이썬은 다양한 종류의 내장 예외를 제공하며, 개발자는 필요에 따라 사용자 정의 예외를 만들 수도 있습니다.

728x90

파이썬의 주요 예외 종류

1. 일반적인 예외

  • ZeroDivisionError: 0으로 나누는 연산 시 발생합니다.
  • TypeError: 자료형이 맞지 않을 때 발생합니다. 예를 들어, 문자열과 숫자를 더하려고 할 때 발생합니다.
  • NameError: 정의되지 않은 변수를 사용하려 할 때 발생합니다.
  • ValueError: 올바른 자료형이지만, 연산에 적합하지 않은 값을 사용할 때 발생합니다. 예를 들어, int() 함수에 문자열을 전달할 때 발생합니다.
  • IndexError: 리스트나 튜플의 유효하지 않은 인덱스를 사용하려 할 때 발생합니다.
  • KeyError: 딕셔너리에서 존재하지 않는 키를 사용하려 할 때 발생합니다.
  • FileNotFoundError: 파일을 열 수 없을 때 발생합니다.

2. 예외 계층 구조

모든 예외는 Exception 클래스를 상속받습니다. Exception 클래스는 예외 처리의 기본 클래스이며, 다양한 하위 클래스를 가지고 있습니다.

  • StandardError: 대부분의 표준 예외들이 이 클래스를 상속받습니다.
  • ArithmeticError: 산술 연산과 관련된 예외들의 기본 클래스입니다.
  • LookupError: 시퀀스나 매핑에서 항목을 찾을 수 없을 때 발생하는 예외들의 기본 클래스입니다.

3. 사용자 정의 예외

개발자는 Exception 클래스를 상속하여 자신만의 예외 클래스를 만들 수 있습니다. 이를 통해 특정 상황에 맞는 예외를 정의하고, 프로그램의 가독성을 높일 수 있습니다.

예외 처리 구문

파이썬에서는 try, except, else, finally 키워드를 사용하여 예외를 처리합니다.

  • try: 예외가 발생할 가능성이 있는 코드 블록입니다.
  • except: try 블록에서 예외가 발생하면 실행되는 코드 블록입니다. 특정 예외를 지정하거나, 모든 예외를 처리할 수 있습니다.
  • else: try 블록에서 예외가 발생하지 않으면 실행되는 코드 블록입니다.
  • finally: 예외 발생 여부와 상관없이 항상 실행되는 코드 블록입니다.
 
try:
    # 예외가 발생할 가능성이 있는 코드
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
else:
    print("계산 결과:", result)
finally:
    print("항상 실행되는 코드")
 

예외 처리 시 주의 사항

  • 구체적인 예외 처리: 가능한 한 구체적인 예외를 처리하여 프로그램의 안정성을 높입니다.
  • 예외 전파: 처리할 수 없는 예외는 상위 호출 함수로 전파하여 적절한 조치를 취합니다.
  • finally 블록의 사용: 파일 닫기, 자원 해제 등 반드시 수행해야 하는 작업은 finally 블록에 위치시킵니다.

결론

파이썬의 예외 처리는 프로그램의 안정성과 유지보수성을 향상시키는 데 매우 중요한 역할을 합니다. 다양한 예외 종류를 이해하고 적절한 예외 처리 기법을 활용하여 robust하고 신뢰할 수 있는 파이썬 프로그램을 개발할 수 있습니다.

 

728x90
728x90