在我的python 3.6脚本中,我必须使用一个外部程序(二进制),该外部程序由于给定的原因目前不时发生一个已知的bug,并且崩溃,并且我的主python程序崩溃了,Floating point exception (core dumped)
。 / p>
我想要的是能够捕捉和/或忽略此错误,以便我的python脚本可以继续执行。我已经知道我不能使用常规的try / catch语法,但是无论采取何种策略,我确实都需要解决此错误。但是我不知道如何。
我的代码如下:
#!/usr/bin/env python3
import subprocess
for i in range(1000):
my_cmd = 'CALL TO PROGRAM THAT BUGS 20% OF THE TIME'
my_process = subprocess.Popen([my_cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
cmd_out = my_process.communicate()[1].decode() # this should correctly wait for termination
# here python exits when my_cmd crashed because of FPE
if my_process.returncode == 0:
print('All good')
else:
print('Program crashed:', cmd_out) # never printed
# here I want to be able to go to the next loop iteration and perform all 1000 iterations
在崩溃时,我得到的只是一张与此类似的印刷品:
All good
All good
All good
All good
Floating point exception (core dumped)
能否请您提供建议?
非常感谢您