是否有一种方法可以编写相同的try,但不需要硬编码就可以编写多行代码?python

是否有一种方法可以编写相同的try,但不需要硬编码就可以编写多行代码?python,python,error-handling,try-catch,except,hardcode,Python,Error Handling,Try Catch,Except,Hardcode,我有多个函数可能返回None: 做某事(),做某事2(),做某事3(),等等 为了克服非类型错误,我必须从代码的另一部分对进行硬编码,并尝试以下操作: try: x = do_other_things(do_something()) except someError: # because of None Type return x = None try: y = do_other_things(do_something2()) except someError: # because

我有多个函数可能返回
None

做某事()
做某事2()
做某事3()
,等等

为了克服非类型错误,我必须从代码的另一部分对
进行硬编码,并尝试以下操作:

try:
  x = do_other_things(do_something())
except someError: # because of None Type return
  x = None

try:
  y = do_other_things(do_something2())
except someError: # because of None Type return
  y = None

是否有任何方法可以将相同的
try-except
应用于不同的代码行/不同的函数调用?

如果您正在测试相同的异常类型,则可以将try/except块包装到一个函数中,该函数接受其他函数和参数列表作为参数

 def try_except(myFunction, *params):
     try:
         return myFunction(*params)
     except ValueError as e:
         return None
     except TypeError as e:
         return None

我不是python专家,但我可以换一种方式思考

创建函数数组并在循环中调用它们:

listOfFuncs = [do_something,do_something2,do_something3]

results = []*len(listOfFuncs)
for index, func in enumerate(listOfFuncs):
    try:
        results[index] = do_other_things(func())
    except someError:
        results[index] = None

要使其适用于多个或无参数,还需要在函数体中包含星号(*):
return myFunction(*params)