我正在學習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