Python subprocess.Popen()除了OSError之外还能引发哪些异常?
在(本节)[关于subprocess.Popen的异常]中,文档说明“引发的最常见异常是OSError” 是否有其他未记录的异常可能由非OSError类型的异常引发,并且不是由无效参数引起的 我这样问是因为我有以下代码:Python subprocess.Popen()除了OSError之外还能引发哪些异常?,python,exception,exception-handling,popen,Python,Exception,Exception Handling,Popen,在(本节)[关于subprocess.Popen的异常]中,文档说明“引发的最常见异常是OSError” 是否有其他未记录的异常可能由非OSError类型的异常引发,并且不是由无效参数引起的 我这样问是因为我有以下代码: try: obj = subprocess.Popen(*args) #.... except OSError as e: pass 我希望这是100%无异常的。我正在使用的系统是Debian GNU/Linux 7.7(wheezy) 我这样问不仅是
try:
obj = subprocess.Popen(*args)
#....
except OSError as e:
pass
我希望这是100%无异常的。我正在使用的系统是Debian GNU/Linux 7.7(wheezy)
我这样问不仅是为了安全地编写程序,也是出于对python
os.Popen
实现的好奇。因此,请说得更具体一点,而不仅仅是说捕获异常
只要捕获异常
,如果你想非常确定你捕获到了所有东西的话。这仍然不会捕获到任何东西类似于SystemExit
,但大多数情况下,您无论如何都不想捕捉这些信息。这将涵盖大部分内容:
try:
obj = subprocess.Popen(*args)
#....
except OSError as e: # to catch OSError
print e
pass
except ValueError as e: # to catch ValueError
print e
pass
except:pass # others
如果使用无效参数调用
Popen
,也会引发ValueError
。如果您在windows上,您可能会遇到AssertionError
的风险。如果您试图设置pass\u fds
。嗯,我仍然感兴趣的是,当…有点curious@WorldSEnder:这是一个实施细节任何例外情况均可随时提出,除非文件另有承诺。