我正在学习python的信号模块。请考虑下面的例子:信号模块不会引发异常
def timeoutFn(func, args=(), kwargs={}, timeout_duration=1, default=None):
import signal
class TimeoutError(Exception):
pass
def handler(signum, frame):
print "Trying to raise exception"
raise TimeoutError
# set the timeout handler
signal.signal(signal.SIGALRM, handler)
signal.alarm(timeout_duration)
try:
result = func(*args, **kwargs)
except TimeoutError as exc:
result = default
finally:
signal.alarm(0)
return result
,并
import time
def foo():
for i in range(10):
time.sleep(0.5)
print "Sleeping"
在调用下面获取打印功能timeoutFn(foo)
但它引发异常。
不应该引发TimeoutError吗?但是,它所打印的全部是
Sleeping Trying to raise exception
并且程序停止。
它工作正确。你能指望什么?那个例外被提出了? – Trilliput
打印“尝试引发异常”后,我没有收到任何TimeoutError – Aditya