В моем основном у меня есть функция с ошибкой и класс, который отслеживает ошибки в списке внутри самого класса. Другими словами, вместо того, чтобы просто вызывать функцию, я хотел бы передать эту функцию методу класса, который затем «регистрирует» ошибку в списке и подавляет ее.
Вот моя проблема:
Эта функция имеет входные аргументы. Когда я передаю свою функцию методу класса, я бы тоже хотел передать входные данные. Что происходит, так это то, что функция выполняется до перехода к методу класса. Следовательно, метод класса не может подавить ошибку, которая происходит в функции.
В приведенном ниже коде я установил переменную silent=True
, поэтому она не должна вызывать ошибку (из-за предложения try / исключением внутри метода). К сожалению, код вызывает ошибку TypeError, которая исходит из функции.
Любой совет будет высоко ценится
PS: я не ищу решения для декоратора:)
Вот класс с методом класса которая может подавить ошибку
class ErrorTracker:
def __init__(self):
self.list = list()
def track_func(self, func, silent=False):
try:
self.list.append('...in trying')
print('....trying.....')
return func
except Exception as e:
self.list.append('...in except')
self.list.append(e) # important line - here the error gets "logged"
if not silent:
raise e
Вот функция с ошибкой
def transformation_with_error(app1, app2):
# DO STUFF HERE with inputs
result = str(app1)+str(app2)
print(result)
print('TYPE ERROR here')
raise TypeError
return result
Здесь основная процедура :
if __name__ == "__main__":
error_tracker = ErrorTracker()
print('-- start transformation')
error_tracker.track_func(transformation_with_error(app1='AA', app2='BB'), silent=True)
print('-- end transformation')
print(error_tracker.list)