Форум сайта python.su
0
скажите пожалуйста, является ли хорошей практикой заворачивать в блок try/except инициализацию класса?
Например, есть такой код:
class Resulter: def __init__(self, results_path, logger): try: self.logger = logger self.results_path = results_path except Exception as e: error_msg = 'Resulter is not init: ' + ' :: ' + str(e) raise Exception(error_msg)
Офлайн
221
=) шикарно
бесмысленно полностью. И нету ни то что хорошей практики, нету даже плохой - это вообще не практика.
Офлайн
0
JOHN_16а разве нет смсла в том, что в лог запишется конкретное место проблемы(проблема с logger или проблема с results_path)?
бесмысленно полностью.
try: resulter = Resulter(args) except: blabla
Отредактировано zlodiak (Май 25, 2019 11:58:32)
Офлайн
568
zlodiak
У вас две операции присваивания под try. Покажите пример кода, когда присваивание может спровоцировать эксепшен. У вас уже есть объект. Присваиванием вы сохраняете адрес объекта в переменной, каким образом эта операция может стать причиной исключения?
Офлайн
FishHookВчера еще прочитал тему - этим же вопросом задался, пришло в голову, что такое в принципе может быть, если используются сеттеры для свойств? Т.е. в сеттере может проверяться тип принимаемого значения, если не соответствует - выбрасывается исключение?
zlodiakУ вас две операции присваивания под try. Покажите пример кода, когда присваивание может спровоцировать эксепшен.
Офлайн
568
Egorro13
Можно в методе __setattr__ райзануть
Офлайн
221
zlodiakВ проектах это решается другими средствами. Типа sentry и подобными.
а разве нет смсла в том, что в лог запишется конкретное место проблемы(проблема с logger или проблема с results_path)?
zlodiakну так вы сделайте так что бы сообщение было информативное, трейсбек содержит всю информацию, включая конкретное место ощибки.
то получил бы сообщение, в котором говорится, что проблема произошла где-то в классе Resulter, без всякого уточнения
Офлайн