def wrap_errors(func):
"""Decorator which logs and catches all errors of decorated function.
Also wraps all possible errors into :py:exc:`DecapodAPIError` class.
:return: Value of decorated function.
:raises decapodlib.exceptions.DecapodError: on any exception in
decorated function.
"""
@six.wraps(func)
def decorator(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as exc:
if isinstance(exc, exceptions.DecapodError):
LOG.error("Error on access to API: %s", exc)
raise
LOG.exception("Exception in decapodlib: %s", exc)
raise exceptions.DecapodAPIError(exc)
return decorator
评论列表
文章目录