Страницы

Поиск по вопросам

воскресенье, 7 апреля 2019 г.

Что лучше использовать Result или Exception

Есть бизнес класс, который выполняет какую-то единицу работы:
class EmployeeCalculator { public Pay CalculatePay(Employee employee) { //Do somthing } }
По каким-то причинам выполнение метода CalculatePay может завершиться с ошибкой. Собственно вопрос: как лучше будет передать ошибку ? Можно сделать какой-нибудь класс типа:
public class PayResult { public Pay Pay { get; set; } public bool IsError { get; set; } public string ErrorMessage { get; set; } }
И возвращать его из метода CalculatePay, а на вызывающей стороне проверять IsError. Либо из метода CalculatePay бросить исключение, и так же на вызывающей стороне ловить его. Если бросать исключение то на каком уровне его ловить (предположим что наше приложение использует MVC) ? На уровне контроллеров и там уже перерабатывать и выдавать сообщения на UI или это может быть отдельный слой обработки ошибок между контроллером и бизнес логикой ?
PS. Буду благодарен любой информации по вопросу (ваши мысли, статьи, книги).


Ответ

Все зависит от причины, по которой не удалось посчитать Pay.
Если это действительно исключительная ситуация - например, невалидные данные для расчета - то нужно бросать исключение.
Если это ожидаемая ситуация - например, Employee ничего не заработал - то стоит возвращать или Pay с 0 (возможно, как преодпределенный экземпляр Pay.None), или возвращать null - если ваш клиентский код готов этот null обработать.

Комментариев нет:

Отправить комментарий