🐍
Pythonで except not in (A, B) とは書けませんか?
試したこと
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


Discussion