본문 바로가기
Python/Python FAQ

Python 하나의 줄에서 여러 예외를 잡으세요 (except 블록), Catch multiple exceptions in one line (except block)

by 베타코드 2023. 5. 5.
반응형

질문


나는 이렇게 할 수 있다는 것을 알고 있습니다:

try:
    # 실패할 수 있는 작업 수행
except:
    # 무엇이든 잘못되면 이렇게 하세요

또한 이렇게도 할 수 있습니다:

try:
    # 실패할 수 있는 작업 수행
except IDontLikeYouException:
    # 부탁하세요
except YouAreTooShortException:
    # 사다리를 타세요

하지만 두 가지 다른 예외 내부에서 동일한 작업을 수행하려면 현재 생각할 수 있는 최선의 방법은 이렇게 하는 것입니다:

try:
    # 실패할 수 있는 작업 수행
except IDontLikeYouException:
    # 부탁하세요
except YouAreBeingMeanException:
    # 부탁하세요

이렇게 (두 예외에 대한 작업이 부탁하세요인 경우) 이렇게 할 수 있는 방법이 있습니까?

try:
    # 실패할 수 있는 작업 수행
except IDontLikeYouException, YouAreBeingMeanException:
    # 부탁하세요

이것은 정확히 다음과 같은 구문에 대한 일치하므로 실제로 작동하지 않습니다:

try:
    # 실패할 수 있는 작업 수행
except Exception, e:
    # 부탁하세요

그러므로 두 가지 다른 예외를 잡으려는 노력이 정확히 이루어지지는 않습니다.

이것을 수행하는 방법이 있습니까?


답변


파이썬 문서(Python Documentation)에서 다음과 같이 설명하고 있습니다:

예외 처리문에서는 괄호로 묶인 튜플 형태로 여러 예외를 지정할 수 있습니다. 예를 들어,

except (IDontLikeYouException, YouAreBeingMeanException) as e:
    pass

또는 파이썬 2에서는 다음과 같이 작성할 수 있습니다:

except (IDontLikeYouException, YouAreBeingMeanException), e:
    pass

예외와 변수를 쉼표로 구분하는 방식은 파이썬 2.6과 2.7에서도 여전히 작동하지만, 이제는 사용이 중지되었으며 파이썬 3에서는 작동하지 않습니다. 대신 as를 사용해야 합니다.

반응형

댓글