У меня есть декоратор обработки исключений, который выглядит следующим образом:
def error_handler(errors=(Exception, ), default=""):
def funcator(func):
def deep_inside(*args, **kwargs):
try:
return func(*args, **kwargs)
except errors as e:
print("i just cought a", repr(e))
return default
return deep_inside
return funcator
вот пример использования:
date_error_handler = error_handler((ValueError), default="INVALID")
from dateutil import parser
@date_error_handler
def date_parser(date):
return parser.parse(date)
теперь, если я передаю что-то вроде этого:
date_parser("12/10/1O")
Я получу вывод, подобный этому:
#output:
i just cought a ValueError('Unknown string format:', '12/1O/10')
'INVALID'
вместо возврата "INVALID"
Я хочу передать функцию в качестве аргумента default
(в декораторе error_handler
), который будетвозьмите строку даты и попробуйте заменить, если в ней присутствуют алфавиты, цифрами.например, это будет выглядеть так:
#alphabet to number replacing function(just for example)
def alpha_to_num(date): return date.replace("O", "0")
теперь мне нужно передать этот alpha_to_num
в качестве аргумента error_handler
'default
param.
вот пример ожидаемого вывода и использования:
вот пример использования:
from dateutil import parser
@error_handler((ValueError), default=alpha_to_num)
def date_parser(date):
return parser.parse(date)
но теперь я хочу получить вывод, подобный этому:
#expected output:
i just cought a ValueError('Unknown string format:', '12/1O/10')
'12/10/10'
как мне сделать что-то подобное?