在Python 3.3中捕获TimeoutExpired异常

Sar*_*ode 9 windows exception python-3.3

很抱歉,如果这是一个新手问题,但我在Python 3.3中捕获超时异常时遇到问题,在win7上运行,例如

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

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

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

如果我尝试"except TimeoutError:"而不是"except TimeoutExpired:",我没有收到错误消息,但在pdb中,我得到:

"Uncaught exception"

并且在任何情况下都不会执行print命令.

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

Pet*_*ell 11

TimeoutExpired不是全球定义的; 使用subprocess.TimeoutExpired来代替.