use*_*943 6 python try-catch except
有没有一种巧妙的方法可以在 try 块中使用乘法命令,以便它基本上尝试每一行而不会在一个命令产生错误时立即停止?
基本上我想替换这个:
try:
command1
except:
pass
try:
command2
except:
pass
try:
command3
except:
pass
Run Code Online (Sandbox Code Playgroud)
有了这个:
try all lines:
command1
command2
command3
except:
pass
Run Code Online (Sandbox Code Playgroud)
定义一个列表以便我可以遍历命令似乎是一个糟糕的解决方案
我会说这是一种设计气味。消除错误通常是一个坏主意,特别是如果您要消除很多错误。但我会给你怀疑的好处。
您可以定义一个包含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)
Run Code Online (Sandbox Code Playgroud)
这有效并且看起来相当干净,但是您需要不断地silence_errors在任何地方重复。
list 解决方案没有任何重复,但看起来有点糟糕,您无法轻松传入参数。但是,您可以从程序中的其他位置读取命令列表,这可能会有所帮助,具体取决于您在做什么。
COMMANDS = [
command1,
command2,
command3,
]
for cmd in COMMANDS:
try:
cmd()
except:
pass
Run Code Online (Sandbox Code Playgroud)