HOWTO · Python

Python의 여러 예외

이 튜토리얼은 파이썬에서 여러 예외를 포착하는 방법을 보여줍니다.

이 페이지의 내용

프로그래밍에서 예외는 프로그램의 정상적인 흐름을 방해하는 발생입니다. Python에서는 오류로 표시됩니다. 예외는 IndexError, KeyError 등과 같은 원인에 따라 다른 유형이 될 수 있습니다.

try및except블록을 사용하여 예외를 처리 할 수 ​​있습니다. try블록에는 예외를 발생시킬 수있는 일부 코드가 포함되어 있으며 예외가 발생하면except블록에 대체 코드를 지정할 수 있습니다.

예를 들면

try:
    print(5 / 0)
except:
    print(5 / 1)

출력:

5

5/0은 예외를 발생시켜except블록의 코드를 실행합니다.

raise키워드를 사용하여 수동으로 예외를 발생시킬 수 있습니다.

파이썬에서 여러 예외를 다룰 수도 있습니다. 우리는 Python에 다른 유형의 예외가 있다는 것을 알고 있으므로 다른 예외에 대해 여러 개의except문을 가질 수 있습니다.

예를 들면

try:
    raise ValueError()
except ValueError:
    print("Value Error")
except KeyError:
    print("Key Error")

출력:

Value Error

하나의except문으로 여러 예외를 포착 할 수도 있습니다. 이러한 방법은 아래에서 설명합니다.

여러 예외를 포착하기 위해 쉼표와 괄호 사용

이를 달성하는 첫 번째 방법은 예외를 쉼표로 구분하고 괄호 안에 넣는 것입니다. 다음 코드는 방법을 보여줍니다.

try:
    raise ValueError()
except (ValueError, KeyError):
    print("Error")

출력:

Error

괄호 안에 언급 된 예외가 발생하면이 블록의 코드가 실행됩니다. 예외 객체 (오류 객체라고도 함)에 이름을 지정할 수도 있습니다. e는 오류 개체에 가장 일반적으로 사용되는 이름입니다. 예를 들면

try:
    raise ValueError()
except (ValueError, KeyError) as e:
    print("Error")

출력:

Error

as키워드는 오브젝트 이름에 대한 별명을 작성합니다. Python 2.5 이하에서는 아래와 같이 쉼표를 사용하여 오류 객체의 이름을 간단히 분리하여as키워드 사용을 제거 할 수있었습니다.

try:
    raise ValueError()
except (ValueError, KeyError), e:
    print("Error")

출력:

Error

여러 예외를 잡기 위해suppress()함수 사용

contextlib라이브러리는 여러 예외를 처리하는 데 사용할 수도있는suppress()라는 매우 유용한 함수를 제공합니다.

이 함수는try,except및pass문을 한 줄의 코드로 결합합니다. 예외 처리에도 사용되며 코드를 더 깨끗하고 읽기 쉽게 만드는with문과 함께 사용됩니다.

다음 코드는이 기능을 사용하는 방법을 보여줍니다.

from contextlib import suppress

with suppress(FileNotFoundError):
    os.remove("somefile.tmp")

위의 코드는try,except및pass문이있는 다음 프로그램과 동일합니다.

try:
    os.remove("somefile.tmp")
except FileNotFoundError:
    pass

pass문은 아무것도 실행하지 않고 빈 코드에 대한 오류를 피하고 싶을 때 사용됩니다.

아래와 같이 여러 예외에 대해suppress기능을 사용할 수 있습니다.

from contextlib import suppress

with suppress(FileNotFoundError, KeyError):
    os.remove("somefile.tmp")