Следует ли помещать попытку / исключение в объявление функции или вызов? - PullRequest
2 голосов
/ 11 июля 2019

Оба этих фрагмента делают одно и то же:

Попробуйте / кроме как в объявлении функции:

def something():
    try:
        # code goes here
    except:
        print("Error")
        sys.exit(1)

something()

Попробуйте / кроме вызова функции:

def something():
    # code goes here

try:
    something()
except:
    print("Error")
    sys.exit(1)

Есть ли кто-нибудь, кто лучше / более питоничен / рекомендован PEP8, или это просто личное предпочтение? Я понимаю, что второй метод будет утомительным и повторяющимся, если функцию нужно вызывать более одного раза, но при условии, что функция вызывается только один раз, какой из них мне следует использовать?

1 Ответ

0 голосов
/ 11 июля 2019

общее правило: «только те исключения, которые вы можете обработать», см. здесь для объяснения

обратите внимание, что необработанное исключение (в большинстве языков) приведет к выходу программы снеудачный код состояния (т. е. ваш sys.exit(1)), он, вероятно, также распечатает сообщение о том, что произошло исключение.поэтому ваша демо-версия эмулирует поведение по умолчанию, но, делая ее хуже

, далее вы ловите каждое исключение, и это, как правило, плохой стиль, например, вы неявно поймаете SystemExit и другие внутренние исключения, с которыми вам, вероятно, не следует иметь дело, взаимодействуя с

...