Dire che ho questo codice:È ragionevole dichiarare un tipo di eccezione per una singola funzione?
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
Come faccio a scegliere un tipo di eccezione SOMEEXCEPTIONHERE
per la funzione? È ragionevole creare un tipo di eccezione univoco per quella funzione, in modo che non ci sia il pericolo che lo condition_that_could_raise_exceptions
innalzi lo stesso tipo di eccezione?
wait_for_x.Timeout = type('Timeout', (Exception,), {})
In Python 3.3, è possibile utilizzare il 'TimeoutError' incorporato. – dan04