Есть 2 варианта к написанию try except блоков:
1 - в каждом блоке проводится лишь одно действие которое может привести к исключению
2 - в одном блоке происходят несколько действий которые могут привести к различным исключениям
Я не уверен какой будет лучше, хотя первый и звучит более явно. А у второго меньше кода и выглядин он элегантнее. Вот и вопрос, какой подход считается предпочттельнее?
try:
payload = decode_jwt_token(
token.credentials, settings.secret_key, settings.jwt.algorithm
)
except JWTError:
raise exceptions.bad_credentials
user_id = int(payload.get("sub", 0))
try:
user = get_user_by_id(session, user_id)
return AuthenticatedUserSchema(user=user, token_payload=payload)
except NoResultFound:
raise exceptions.bad_credentials
Или же
try:
payload = decode_jwt_token(
token.credentials, settings.secret_key, settings.jwt.algorithm
)
user_id = int(payload.get("sub", 0))
user = get_user_by_id(session, user_id)
return AuthenticatedUserSchema(user=user, token_payload=payload)
except (JWTError, NoResultFound):
raise exceptions.bad_credentials