Многие методы базы кода, написанные моими сверстниками, выполняют свою собственную обработку ошибок, как правило, путем поиска, уведомления и ведения журнала.
В этих случаях методы возвращают логическое значение, указывающее на успех или неудачу.
Иногда, если метод терпит неудачу, я хочу, чтобы вызывающий код знал почему, а возврат логического значения недостаточно.
Один из способов этого - сохранить обработку ошибок в методах, но сделать метод недействительным и заставить методы выкидывать их Исключения.
Однако в последнее время я привык возвращать Исключения в соответствующие методы, обычно это действия, которые в противном случае могут быть недействительными, но где я хотел бы знать статус действия.
Преимущества возврата исключения из-за того, что метод void генерирует исключение, заключается в том, что я думаю, что это облегчает для других программистов использование вашей библиотеки, и что более важно, это означает, что вы можете безопасно вызвать этот метод без беспокоиться о том, чтобы поймать Исключение
Например, если метод просто недействителен, возможно, не сразу становится очевидным, что программист должен обрабатывать успех или неудачу.
Но если методы конкретно указывают тип возврата Exception, то вы знаете, что можете проверить успех или неудачу, если хотите. Но это также означает, что вам не нужно беспокоиться о том, чтобы поймать ошибку, если вы этого не хотите.
Это имеет смысл? Может быть, я не использовал лучший пример, , но, вообще, нормально ли возвращать Исключения, или там лучший образец там?
UPDATE
вау, подавляющий результат никак. Я так думала. Я должен сказать, что делать это (возвращая исключение) kinda решил проблему, но он чувствовал себя не так.
Итак, из некоторых ваших ответов наилучшим решением для этих конкретных сценариев (сложный класс или класс с одной или несколькими внешними зависимостями (т.е. веб-служба)), по-видимому, является пользовательским классом результатов?
UPDATE:
Я очень ценю все мнения, я читаю все, и я тщательно обдумываю все материалы.
В настоящее время я предпочитаю иметь метод void, бросая Исключения, а затем ловить их снаружи... это лучше?