11

抱歉,如果这是一个新手问题,但我无法在 Win7 上运行的 Python 3.3 中捕获超时异常,例如

import subprocess
try:
   subprocess.call("ping -t localhost", timeout=3)
except TimeoutExpired:
    print("Timeout happened.\n")

超时工作正常,根据我的 pdb 回溯,它说: "raise TimeoutExpired(self.args, timeout)"

然而“除了 TimeoutExpired:”没有抓住它。此外,TimeoutExpired 未列为标准异常,而是作为 nameError 出现。

如果我尝试"except TimeoutError:"代替"except TimeoutExpired:",我不会收到错误消息,但在 pdb 中,我会收到:

"Uncaught exception"

并且在任何情况下都不会执行打印命令。

这是一个错误,还是我做错了什么?

4

1 回答 1

15

TimeoutExpired不是全局定义的;改为使用subprocess.TimeoutExpired

于 2013-10-16T17:44:25.870 回答