У меня есть класс, который обрабатывает доступ к базе данных.Я пытаюсь поймать исключение во время взаимодействия с базой данных, для этого я использую декоратор.
В настоящее время я возвращаю ошибку, обнаруженную в декораторе, и проверяю каждый раз, когда запускаю метод класса, если значениевозвращается исключение.Это на самом деле работает, но мне интересно, есть ли лучший способ сделать это, потому что мой код становится повторяющимся.
Я думал об использовании декоратора для вызова метода класса.Это как-то возможно?
Вот пример кода:
def catch_exception(f):
@functools.wraps(f)
def func(*args, **kwargs):
try:
return f(*args, **kwargs)
except Exception as error:
# call method connection_error(error)
return func
class AccessDB(object):
def connection_error(self, error):
[...]
@catch_exception
def add_user(self, username, password, is_admin=False):
[...]
@catch_exception
def get_user(self, username):
[...]
А вот пример того, как я использую декоратор.(У меня return error
вместо # call method connection_error(error)
)
user = db.get_user(username)
if not isinstance(user, Exception):
[...]
Я нуб, если у вас, ребята, есть лучшее решение, дайте мне знать!Спасибо за внимание.