Say mam ten kod:Czy można zadeklarować typ wyjątku dla pojedynczej funkcji?
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
Jak mogę wybrać typ wyjątku SOMEEXCEPTIONHERE
dla funkcji? Czy jest rozsądne utworzenie unikalnego typu wyjątku dla tej funkcji, tak aby nie było niebezpieczeństwa, że condition_that_could_raise_exceptions
podniesie ten sam typ wyjątku?
wait_for_x.Timeout = type('Timeout', (Exception,), {})
W Pythonie 3.3 można użyć wbudowanego 'TimeoutError'. – dan04