例外インスタンスがあり、そのタイプに応じてコードを実行する必要があります。どちらの方法がより明確ですか - re raise exception または isinstance check?
再レイズ:
try:
raise exception
except OperationError as err:
result = do_something1(err)
except (InvalidValue, InvalidContext) as err:
result = do_something2(err)
except AnotherException as err:
result = do_something3(err)
except:
pass
インスタンスチェック:
if isinstance(exception, OperationError):
result = do_something1(err)
elif isinstance(exception, (InvalidValue, InvalidContext)):
result = do_something2(err)
elif isinstance(exception, AnotherException):
result = do_something3(err)
PS。コードは django process_exception ミドルウェアで使用されるため、例外を再発生させるときはexcept:pass
、すべての未知の例外について記述する必要があります。