OSError之外的哪些异常可以subprocess.Popen()引发?

时间:2014-11-17 21:46:59

标签: python exception exception-handling popen

在(本节)[https://docs.python.org/3/library/subprocess.html#exceptions]关于subprocess的异常.Popen文档说“最常见的异常是OSError”。

是否存在其他未记录的异常,这些异常可能是由OSError类型引起的,并且不是由于无效的参数引起的?

我问这个是因为我有以下代码:

try:
    obj = subprocess.Popen(*args)
    #....
except OSError as e:
    pass

我希望这是100%免费的例外。我正在研究的系统是Debian GNU / Linux 7.7(wheezy)。

我不仅要求这是一个安全的方式来编写我的程序,而且还因为python os.Popen实现的好奇心。所以请更具体而不仅仅是说要抓住Exception

2 个答案:

答案 0 :(得分:1)

抓住Exception,如果你想确定自己抓住了一切。这仍然不会像SystemExit那样抓住,但大部分时间你都不想抓住那些。

答案 1 :(得分:1)

这将涵盖其中的大部分内容:

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