Ho il seguente codice:Python prova-se non con dei se altro
try:
pk = a_method_that_may_raise_an_exception()
except:
method_to_be_executed_in_case_of_exception_or_pk_is_false()
else:
if pk:
process_pk()
else:
method_to_be_executed_in_case_of_exception_or_pk_is_false()
Questo potrebbe essere scritto come:
try:
if a_method_that_may_raise_an_exception():
process_pk()
else:
method_to_be_executed_in_case_of_exception_or_pk_is_false()
except:
method_to_be_executed_in_case_of_exception_or_pk_is_false()
io non sono felice che il metodo method_to_be_executed_in_case_of_exception_or_pk_is_false()
appare due volte, vale a dire in altro di entrambi se e provare ... tranne.
C'è un modo migliore per farlo?
Personalmente sarei più preoccupato di avere un nudo 'except' rispetto a chiamare la stessa funzione da due luoghi. Dovresti riscriverlo per prendere solo le eccezioni che ti aspetti vengano lanciate. – Duncan
Nota che il tuo secondo esempio è _not_ equivalente al primo, dal momento che 'method_to_be_executed_in_case_of_exception_or_pk_is_false' potrebbe lanciare un'eccezione, causandone l'esecuzione due volte! – Eric