Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 3에서 예외 체인을 사용하는 표준 방법이 있습니까?

<시간/>

하나의 예외 'A'를 처리하는 동안 다른 예외 'B'가 발생할 수 있습니다. Python 2.0 버전에서 이런 일이 발생하면 예외 B가 외부로 전파되고 예외 A가 손실됩니다. 문제를 디버그하기 위해 두 예외에 대해 아는 것이 유용합니다.

때로는 예외 처리기가 의도적으로 예외를 다시 발생시켜 추가 정보를 제공하거나 예외를 다른 유형으로 변환하는 것이 유용합니다. __cause__ 속성은 예외의 직접적인 원인을 기록하는 명시적인 방법을 제공합니다.

예외 체이닝은 Python 3에서만 사용할 수 있습니다. Python 3에는 raise ... from 절에서 chain 예외가 있습니다. 우리는 다음과 같이 raise..from 절을 사용하여 주어진 코드를 다시 작성합니다.

try:
s = {‘a’:1, ‘b’:2}['c']
except KeyError as e:
raise ValueError('failed') from e

Python 3은 기본적으로 다음과 같이 예외 처리 중에 발생한 모든 예외를 표시합니다.

Traceback (most recent call last):
File "source_file.py", line 2, in <module>
s = {'a':1, ‘b’:2}['c']
KeyError: 'c'

위의 예외는 다음 예외의 직접적인 원인이었습니다.

Traceback (most recent call last):
File "source_file.py", line 4, in <module>
raise ValueError('failed') from e
ValueError: failed