Mam następujący kod:Python try-chyba od tego, czy innego
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()
To może być zapisany jako:
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()
nie jestem zadowolony, że metoda method_to_be_executed_in_case_of_exception_or_pk_is_false()
pojawia się dwukrotnie, to znaczy w innym z nich, jeśli i spróbuj ... z wyjątkiem.
Czy jest lepszy sposób to zrobić?
Osobiście byłbym bardziej martwi się o konieczności gołej 'except' niż nazywając tę samą funkcję od dwóch miejscach. Powinieneś przepisać to, aby wychwycić tylko wyjątki, które spodziewałbyś się rzucić. – Duncan
Zauważ, że twój drugi przykład nie jest równoważny z pierwszym, ponieważ 'method_to_be_executed_in_case_of_exception_or_pk_is_false' może sam rzucić wyjątek, powodując jego dwukrotne wykonanie! – Eric