Re[2]: Реализация функции проверяющей что-то и возвращающей ОК или ошибку
От: Xenon_IPC  
Дата: 30.07.12 17:09
Оценка: 6 (2) +2 -1
Здравствуйте, AndrewVK, Вы писали:

AVK>Ответ на исходный вопрос — если в языке есть нормальные исключения, то следует использовать именно их.


В корне неверный ответ. Во-первых, исключения необходимо использовать только в исключительных ситуациях, т.е. в случае ошибки. На то они и исключения, чтобы уведомлять об ошибке. Для уведомления клиента функции о чем-то, что является нормальной ситуацией существует много разных методов. По сути все основные автор вопроса охватил. Функция называется CanSendMessageToUser, т.е. она проверяет возможность доставки сообщения к пользователю. Т.е. для нее как возможность доставки так и его отсутствие являются обычными нормальными ситуациями. Исключение здесь можно кидать только в случае, например, некорректной передачи аргумента User. Во всех остальных случаях получение исключения из данной функции — нонсенс (даже если вообще нет сети или еще невесть что происходит). Самый корректное возвращаемое значение — это bool. Если необходима расшифровка причины проблемы, то необходимо использовать последний способ предложенный автором. С точки зрения дальнейшей поддержки программы и простоты использования это самый корректный путь. А сходства с генерацией исключения тут нет. Когда возникает исключение, то подымается содержимое стека и проводится много еще другой доп. работы. Более того, если клиент этой процедуры не обернет вызов в try/catch то программа может вообще вылететь. А возврат объекта — это обычный возврат объекта.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.