#c_sharp
Есть большой модуль, состоящий из множества методов. У модуля есть точка входа - начальный метод, который вызывает многие другие методы, те в свою очередь вызывают что-то еще и так далее. Весь код в начальном методе обернут в try catch. Нужно ли во вложенных методах делать какие-либо проверки, если все равно начальный метод отловит ошибку. Никакой особенной обработки всех возможных ошибок не требуется делать. В try catch просто логирует ее в базу. Просто дико бесит в каком-то из вложенных методов делать что-то в стиле: if (City == null || City.House == null || City.House.Premise == null) throw new NullRefenceException("Какой-то текст для админа") DoSomething(City.House.Premise.Subscriber) либо возвращать из этого метода null, а в вызывающем методе проверить значение на null и там выкинуть исключение. Я знаю, что есть оператор "?.", но использовать фишки нового шарпа в нашем проекте нельзя. Поэтому и созрел вопрос: надо ли постоянно делать какие-то проверки, если в начальном методе есть try catch, который отловит все исключения и там в одном единственном будет код, логирующий эту ошибку в базу. Как правильно писать? Дико надоело на каждый чих проверять что-то на null.
Ответы
Ответ 1
Есть гайдлайны с общими рекомендациями, когда бросать исключение, а когда нет. В общих словах, если метод может отработать свою логику - ок, если не может - должен бросить исключение. Также если метод может быть вызван только из вашего кода - то параметры должны быть уже проверены и второй раз их проверять уже не надо. Если параметры могут придти извне (из стороннего кода/файла/методов, которые потребитель может перегрузить/ публичных методов публичных классов/ откуда то ещё что вы не контролируете), то их надо проверять.
Комментариев нет:
Отправить комментарий