Windows 在Python 3.3中捕获TimeoutExpired异常

Windows 在Python 3.3中捕获TimeoutExpired异常,windows,exception,python-3.3,Windows,Exception,Python 3.3,如果这是一个新手问题,很抱歉,但是我在捕捉运行在win7上的Python3.3中的超时异常时遇到了问题,例如 import subprocess try: subprocess.call("ping -t localhost", timeout=3) except TimeoutExpired: print("Timeout happened.\n") 超时工作正常,根据我的pdb回溯,它显示: “raise TimeoutExpired(self.args,timeout)”

如果这是一个新手问题,很抱歉,但是我在捕捉运行在win7上的Python3.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

如果我尝试除TimeoutError之外的
而不是除TimeoutExpired之外的
,我不会得到错误消息,但在pdb中,我会得到:

“未捕获异常”

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


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

TimeoutExpired
没有全局定义;改用
subprocess.TimeoutExpired

是的,但是subprocess.TimeoutExpired肯定应该从TimoutError派生。。。也不例外。我认为这可能是疏忽大意。我可能错了,但我认为他们选择了SubprocessError子类,因为这在Python程序本身的上下文中不是一个例外,而是在它监视的子进程中。