Python: 创建一个 try except general purpose function

Python: Create a try except general purpose function

对于一个解析脚本,我需要在很多地方使用 try except 块。我想我可以使用一个通用函数,它将需要计算的表达式用作参数。

我不能直接将表达式用作参数,因为它会在进入 try except 块之前抛出错误:

def exception(a, nr_repeat=5):
if nr_repeat != 0:
    try:
        a
        nr_repeat = 0
    except ExceptionType:
        exception(a, nr_repeat-1)

所以,我开始传递 a ,表达式作为字符串进行评估,并使用 exec:

def exception(a, nr_repeat=5):
 if nr_repeat != 0:
    try:
        exec(a)
        nr_repeat = 0
    except ExceptionEx:
        exception(a, nr_repeat-1)

如果表达式不使用变量,这将起作用。如果它使用变量,即使我将 then 传递给函数也不起作用。

def exception(a, nr_repeat=5,*args):
 if nr_repeat != 0:
    try:
        exec(a)
        nr_repeat = 0
    except ExceptionEx:
        exception(a, nr_repeat-1)

函数:

exception("print('blue)") - working
exception("data.split('/')") - not working

ExceptionEx只是不同异常的占位符

您尝试过传入 lambda 函数吗?

exception(lambda: data.split('/'))

在你的函数内部:

def exception(a, nr_repeat=5):
if nr_repeat != 0:
    try:
        a()
        nr_repeat = 0
    except ExceptionType:
        exception(a, nr_repeat-1)

lambda 在您调用它之前不会被计算。