Python의 여러 예외

Manav Narula 2023년1월30일
  1. 여러 예외를 포착하기 위해 쉼표와 괄호 사용
  2. 여러 예외를 잡기 위해suppress()함수 사용
Python의 여러 예외

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

tryexcept블록을 사용하여 예외를 처리 할 수 ​​있습니다. 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,exceptpass문을 한 줄의 코드로 결합합니다. 예외 처리에도 사용되며 코드를 더 깨끗하고 읽기 쉽게 만드는with문과 함께 사용됩니다.

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

from contextlib import suppress

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

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

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

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

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

from contextlib import suppress

with suppress(FileNotFoundError, KeyError):
    os.remove("somefile.tmp")
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Python Exception