Python:一个 try except 块中的多个

2024-06-14 06:48:24 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种简单的方法可以在try块中使用multiply命令,这样当一个命令产生错误时,它就基本上不停地尝试每一行命令?在

基本上我想替换这个:

try:
   command1
except:
   pass
try:
   command2
except:
   pass
try:
   command3
except:
   pass

有了这个:

^{pr2}$

定义一个列表以便我可以循环使用这些命令似乎不是一个好的解决方案


Tags: 方法命令列表定义错误pass解决方案multiply
3条回答

实际上,你的第二选择正是你想要的。一旦任何命令引发异常,它就会转到except,并包括异常发生的位置和发生的行的信息。如果您愿意,您可以捕捉不同的异常并使用

try:
  command1
  command2
except ExceptionONe:
  pass
except Exception2:
  pass
except:
  pass   # this gets anything else.

我觉得这是一种设计的味道。压制错误通常是个坏主意,尤其是如果你让很多错误保持沉默的话。但我会给你一个怀疑的好处。在

您可以定义一个包含try/except块的简单函数:

def silence_errors(func, *args, **kwargs):
    try:
        func(*args, **kwargs)
    except:
        pass # I recommend that you at least log the error however


silence_errors(command1) # Note: you want to pass in the function here,
silence_errors(command2) # not its results, so just use the name.
silence_errors(command3)

这是可行的,看起来相当干净,但是您需要在任何地方不断重复silence_errors。在

列表解决方案没有任何重复,但看起来有点糟糕,而且不能轻松地传递参数。但是,您可以从程序中的其他位置读取命令列表,这可能会根据您正在执行的操作而受益。在

^{pr2}$

除非我完全误解了你,否则应该这样做:

try:
  thing1
  thing2
  thing3
except:
  pass

try块可以包含任意多个语句。在

相关问题 更多 >