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 在您调用它之前不会被计算。
对于一个解析脚本,我需要在很多地方使用 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 在您调用它之前不会被计算。