Всем привет.
вопрос связанный с обработкой ошибок без исключений
допустим есть некая функция "сервер" и ряд функций "клиентов" обращающихся к ней прямо или косвенно
вставить ли обработку некорректного параметра в функцию "сервер" и разрешить
всем остальным функциям в системе не проверять передаваемое значение аргумента
или вставить проверку в каждую функцию "клиент" перед вызовом а в функции "сервер"
проверку не делать ?
если эффективно то надо проверять в каждом "клиенте" если красиво то
ряд вызовов будет "холостых" пока до "сервера" вызов дойдет и он решит что параметр ошибочный
пока стек размотается до "клиента" обратно а ведь этого можно избежать
если вставлять проверки в "клиентах" но так проверок больше некрасиво получается
вопрос не стоит надо ли проверять параметры пришедшие из "внешнего мира"
вопрос как программировать обработку ошибок внутри ?
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>Всем привет. J>вопрос связанный с обработкой ошибок без исключений J>допустим есть некая функция "сервер" и ряд функций "клиентов" обращающихся к ней прямо или косвенно J>вставить ли обработку некорректного параметра в функцию "сервер" и разрешить J>всем остальным функциям в системе не проверять передаваемое значение аргумента J>или вставить проверку в каждую функцию "клиент" перед вызовом а в функции "сервер" J>проверку не делать ? J>если эффективно то надо проверять в каждом "клиенте" если красиво то J>ряд вызовов будет "холостых" пока до "сервера" вызов дойдет и он решит что параметр ошибочный J>пока стек размотается до "клиента" обратно а ведь этого можно избежать J>если вставлять проверки в "клиентах" но так проверок больше некрасиво получается J>вопрос не стоит надо ли проверять параметры пришедшие из "внешнего мира" J>вопрос как программировать обработку ошибок внутри ?
Абстрактно.
Проверка значений должна выполняться в функции, которая с этими значениями работает.
Это, помимо прочего, устраняет дублирование. Если логика работы функции изменится, не
придется переписывать код клиентов. И потом, что значит "красиво" ? Кидать в функцию
значения без проверки на клиенте, полагаясь на то, что все аргументы корректны ?
Обработку некорректных значений в любом случае надо делать (исключения бывают, разумеется), но
тогда лучше делать это централизованно.