Как выполнить обработку ошибок для 200 функций? - PullRequest
0 голосов
/ 12 марта 2019

Ниже приведен пример функции

def temp(data):
    a = sample_function_1(data)
    a = a[0][0]
    b = sample_function_2(data,'no',0,30)
    b = b[-1]
    c = sample_function_3(data, 'thank', 0, None, 15, 5)
    c = c[-2]
    print(a, b, c)
    return a, b, c

Обработка ошибок выполняется для sample_function_1, sample_function_2 и sample_function_3. Таким образом, значения, возвращаемые этими функциями, не вызывают проблем, но вычисления, выполненные для переменных a, b, c, могут вызвать ошибки.

Существует более 200 таких функций, и мне нужно эффективно управлять ошибками. Я знаю, что попробовать, поймать, кроме как вариант, но есть ли подходы, которые могут быть использованы для решения этой проблемы.

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

С 200 функциями для изменения всего будет трудная работа, но вы можете попробовать использовать декоратор, вы сможете перехватить только одну ошибку на функцию, но это может быть хорошим компромиссом для вашего случая.

def exception_logger(func):
    wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except IndexError:
           ...doSomething...
           raise
    return wrapper

@exception_logger
def temp(data):
   ...doSomething...
0 голосов
/ 12 марта 2019

Я думаю, что вы можете просто определить функцию и просто вызвать функцию exception_logger в любом вашем блоке кроме любой функции.

import traceback

def exception_logger():
    exception_log = traceback.format_exc().splitlines()
    exception_log.append(str(datetime.now()))
    print exception_log
    return exception_log

def hello():
    try:
        print("Hello World!")

    except Exception as e:
        exception_logger()
...