Пользовательский тип исключения - «самостоятельная регистрация» - это плохо? - PullRequest
2 голосов
/ 14 апреля 2011

Я работаю над проектом, в котором команда определила собственный тип исключения, в конструкторе которого содержится вызов метода Logging, который регистрирует исключение, переданное в конструктор.

Я бы подумал, что это плохо - не так ли?

Проблема в том, что, хотя я мог бы удалить «самозагрузку», я не знаю, насколько люди полагаются на то, что там заносится.

Ответы [ 3 ]

1 голос
/ 14 апреля 2011

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

Лично мне нравится контролировать, регистрирует ли метод информацию или нет (по большей части). Что если я хочу обработать исключение таким образом, чтобы не загромождать мои файлы журналов?

С другой стороны, возможно, человек, который написал код, специально разработал его таким образом, чтобы другие программисты не обходились без логирования НЕ, когда они должны. Это зависит от сценария.

Мне лично это не нравится, потому что это проблема разделения задач - регистрация, вероятно, должна быть отделена от задачи, которую пытается выполнить метод. Если регистрация не является неотъемлемой частью этой задачи. И за некоторыми исключениями регистрация может быть очень важной.

1 голос
/ 14 апреля 2011

Сообщество C ++ постоянно обсуждает правильный способ обработки исключений во время конструирования.Проблема в том, что если вы что-то бросаете в конструктор, это должно означать, что вы не смогли построить объект.Если вместо этого код просто отмечает, что все было неоптимально, но конструирование продолжалось, это следует сделать другим способом.Это вызвало бы Не использовать исключения для потока управления antipattern.

0 голосов
/ 14 апреля 2011

Я думаю, что это плохо.Почему бы не использовать обработчик событий необработанных исключений, чтобы перехватить их все и сделать там правильные записи?То, как вы его описываете, нарушает принцип единой ответственности (SRP), а также помнит, что исключения сериализуются, например, если вы генерируете исключение в контексте службы (например, служба WCF), а затем передаете его своему клиенту (веб/ настольное приложение) где должна происходить регистрация?Подобные вопросы / проблемы говорят мне, что лучше отделять ведение журнала от исключения и хранить их отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...