파이톤으로 except not in (A, B) 을 쓸 수 없습니까?

7485 단어 Python초학자tech

시도해 본 일


class MindError(Exception): pass
class BodyError(Exception): pass


try:
    raise MindError("精神をもっと集中してください")
except not in (MindError, BodyError) as e:
    raise e

# なにも raise されずに後続処理が行われることを期待
시운전의 결과는 다음과 같다.
SyntaxError: invalid syntax

제대로 돌아가지 못했어요.그래서 이렇게 변해 봤어요.


class MindError(Exception): pass
class BodyError(Exception): pass
IGNORE_EXCEPTIONS = (MindError, BodyError)


def dosomething(error: Exception):
    try:
        raise error
    except Exception as e:
        if isinstance(e, IGNORE_EXCEPTIONS):
            print(f"{type(e).__name__}が起きましたが無視します")
        else:
            raise e
출력을 확인합니다.
>>> dosomething(ValueError("想定外の値です"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in dosomething
  File "<stdin>", line 3, in dosomething
ValueError: 想定外の値です

>>> dosomething(MindError("精神をもっと集中してください"))
MindErrorが起きましたが無視します

아니오, 괜찮아요. 이런 느낌도 괜찮아요.


class MindError(Exception): pass
IGNORE_EXCEPTIONS = (MindError, BodyError)


def dosomething(error: Exception):
    try:
        raise error
    except IGNORE_EXCEPTIONS as e:
        print(f"{type(e).__name__}が起きましたが無視します")
    except Exception as e:
        # なにかしたいことをする
        raise e

좋은 웹페이지 즐겨찾기