> 백엔드 개발 > 파이썬 튜토리얼 > Python의 예외 처리

Python의 예외 처리

Mary-Kate Olsen
풀어 주다: 2024-12-06 20:19:12
원래의
776명이 탐색했습니다.

Exception Handling in Python

이 문서에서는 Try-Exception 블록, 사용자 정의 예외, 예외 연결 및 강화와 같은 고급 기능을 포함하여 Python에서 예외를 처리하는 데 사용되는 다양한 기술을 살펴봅니다.


Python은 프로그래머가 충돌을 방지하는 코드를 구현할 수 있을 뿐만 아니라 피드백을 제공하고 애플리케이션 안정성을 유지하는 강력한 예외 처리 프레임워크를 제공합니다. 또한 개발자는 try-Exception 블록, 사용자 정의 예외 등과 같은 구성을 사용하여 오류를 적절하게 관리할 수 있습니다.

- Try-Except 블록

try-Exception 블록에서는 예외를 발생시킬 수 있는 코드가 try-블록에 배치되고, Except-블록은 예외가 발생할 경우 수행할 작업을 지정합니다(Python Software Foundation, n.d.).

예:

try:
    result = 1 / 0
except ZeroDivisionError:
    print("Cannot divide by zero.")
로그인 후 복사
로그인 후 복사

하나의 try-제외 블록에서 여러 예외를 포착하려면 여러 제외 블록이 포함된 try-블록을 사용하여 각 예외 유형에 대한 특정 응답을 생성할 수 있습니다. 또는 튜플을 사용하여 단일 예외 표현식으로 여러 예외를 포착할 수 있습니다.

예:

# One try block and several except blocks
try:
    result = 1 / 'a'
except ZeroDivisionError:
    print("Cannot divide by zero.")
except TypeError:
    print("Type error occurred.")

# One try block and one except tuple block
try:
    # some operation
    result = 1 / 'a'
except (ZeroDivisionError, TypeError) as e:
    print(f"Error occurred: {e}")
로그인 후 복사
로그인 후 복사

- Else 절

else 절은 try-Exception 블록 뒤에 배치되며 try 블록에서 예외가 발생하지 않으면 실행됩니다.

예:

try:
    result = 1 / 2
except ZeroDivisionError:
    print(“Cannot divide by zero.”)
else:
    print(“Division successful.”)
로그인 후 복사

- 마지막 절

finally 절은 항상 try 블록이나 모든 제외 블록 뒤에 배치됩니다. 여기에는 예외가 발생한 경우에도 일반적으로 파일이나 네트워크 연결과 같은 리소스를 정리하기 위해 무슨 일이 있어도 실행되는 코드가 포함되어 있습니다.

예:

try:
    result = 1 / ‘a’
except ZeroDivisionError:
    print(“Cannot divide by zero.”)
except TypeError:
    print(“Type error occurred.”)
else:
    print(“Division successful.”)
finally:
    print(“Goodbye, world!”)
로그인 후 복사
  • 인상 성명

예외 발생: raise 절은 예외가 발생하도록 강제하여 예외를 발생시키며, 일반적으로 특정 조건이 충족되지 않았음을 나타냅니다.

예:

if ‘a’ > 5:
    raise ValueError(“A must not exceed 5”)
로그인 후 복사

- 예외 체이닝

절 올리기를 사용하여 예외를 연결할 수 있습니다. 이는 원래 오류에 컨텍스트를 추가하는 데 유용합니다.

예를 들어

try:
    open(‘myfile.txt’)
except FileNotFoundError as e:
    raise RuntimeError(“Failed to open file”) from e
로그인 후 복사

- 사용자 정의 예외

Exception 클래스 또는 기타 내장 예외 클래스(Mitchell, 2022)에서 상속하여 고유한 예외 클래스를 정의할 수 있습니다.

예:

class My_custom_ (Exception):
    pass

try:
    raise MyCustomError(“An error occurred”)
except MyCustomError as e:
    print(e)
로그인 후 복사

- 예외 강화

add_note() 메소드를 사용하여 사용자 정의 메시지나 메모를 예외 개체(일명 e)에 '추가'함으로써 예외에 정보나 컨텍스트를 추가할 수 있습니다.

예:

def divide_numbers(a, b):
    try:
        result = a / b
    except ZeroDivisionError as e:
        e.add_note(“Cannot divide by zero”)
        e.add_note(“Please provide a non-zero divisor”)
        raise
try:
    num1 = 10
    num2 = 0
    divide_numbers(num1, num2)
except ZeroDivisionError as e:
    print(“An error occurred:”)
    print(str(e))
로그인 후 복사

예외 처리는 여러 가지 이유로 중요합니다.

  1. 프로그램 충돌 방지: 처리되지 않은 예외로 인해 프로그램이 충돌하여 데이터가 손실되고 사용자 경험이 저하될 수 있습니다.
  2. 의미 있는 오류 메시지 제공: 예외를 처리하면 사용자에게 무엇이 잘못되었는지, 해결 방법을 이해하는 데 도움이 되는 유익한 오류 메시지를 제공할 수 있습니다.
  3. 단계적 성능 저하 허용: 예외 처리를 통해 오류가 발생하더라도 프로그램이 계속 실행될 수 있습니다.

간단한 프로그램 오류 처리 예:

try:
    result = 1 / 0
except ZeroDivisionError:
    print("Cannot divide by zero.")
로그인 후 복사
로그인 후 복사
# One try block and several except blocks
try:
    result = 1 / 'a'
except ZeroDivisionError:
    print("Cannot divide by zero.")
except TypeError:
    print("Type error occurred.")

# One try block and one except tuple block
try:
    # some operation
    result = 1 / 'a'
except (ZeroDivisionError, TypeError) as e:
    print(f"Error occurred: {e}")
로그인 후 복사
로그인 후 복사

요약하자면, Python은 프로그램이 갑자기 실패하지 않고 예상치 못한 상황을 처리할 수 있도록 하는 포괄적인 예외 처리 프레임워크를 제공합니다. Try-Exception 블록, 사용자 정의 예외, 예외 체이닝 및 보강과 같은 고급 기능과 같은 구성을 활용하여 개발자는 프로그램이 탄력적이고 사용자 친화적이며 예상치 못한 시나리오를 적절하게 처리할 수 있는지 확인할 수 있습니다.


참고자료:

미첼 R(2022년 6월 13일). 사용자 정의 예외. _Python 필수 교육 _[동영상]. LinkedIn 학습. https://www.linkedin.com/learning/python-essential-training-14898805/custom-Exceptions?autoSkip=true&resume=false&u=2245842

Python 소프트웨어 재단. (n.d.). 8. 오류 및 예외. 파이썬. python.org.


원본은 2024년 8월 21일 Python의 Exception Handling - Medium에 게시되었습니다.

위 내용은 Python의 예외 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿