說我有這樣的代碼:爲單個函數聲明異常類型是否合理?
def wait_for_x(timeout_at=None):
while condition_that_could_raise_exceptions
if timeout_at is not None and time.time() > timeout_at:
raise SOMEEXCEPTIONHERE
do_some_stuff()
try:
foo()
wait_for_x(timeout_at=time.time() + 10)
bar()
except SOMEEXCEPTIONHERE:
# report timeout, move on to something else
如何挑選功能的異常類型SOMEEXCEPTIONHERE
?爲該函數創建一個唯一的異常類型是否合理?因此,condition_that_could_raise_exceptions
不會引發相同的異常類型?
wait_for_x.Timeout = type('Timeout', (Exception,), {})
在Python 3.3中,你可以使用內建的'TimeoutError'。 – dan04