@Venesuella
BlackJack и ...

Как возвращать ошибки из сервисов?

Здравствуйте! Подскажите, кто как возвращает ошибки из Business layer ? К примеру
public User Method(Guid id)
{
 if(id == Guid.Empty) throw new ArgumentException(" some message ");
 return findedUserById;
}


стоит ли так делать, стоит ли использовать exception грубо говоря для валидации business правил? Кто какими методами пользуется, поделить
  • Вопрос задан
  • 531 просмотр
Пригласить эксперта
Ответы на вопрос 3
alex1t
@alex1t
.net developer
Ещё как вариант - это особый класс возврата, а-ля ASP.NET MVC ActionResut.

Т.е. все методы возвращают некоторый класс Result:
class Result<T> {
   public T Result {get; private set; }}
   public bool Success {get; private set; }}
   public IEnumerable<Exception> Errors { get ... }
   public string ErrorMessage {get ... } // этого можно и не делать

   private Result() {}
   public static Result<T> Success(T result) { return new Result() { Result = result, Success = true }; }
   public static Result<T> Fail(Exception ex) { return new Result() { Success = false, Errors = new List<Exception>() { ex }, ErrorMessage = ex.Message }; }
}
Ответ написан
lexxpavlov
@lexxpavlov
Программист, преподаватель
Исключение - это исключительная ситуация, которая не должна происходить в обычном варианте работы. Но если возможно отсутствие объекта, и это нормальная ситуация (неисключительная), то это не исключение, лучше вернуть null.
Пример первый - метод должен вернуть текущего юзера. Конечно, текущий юзер должен быть, если его нет - это исключение.
Пример второй - ищется комментарий к сообщению. Ни одного комментария никто не оставил, и если искать найденный юзер комментария - то юзер не найдётся, но это не исключение - нормально вернуть null.
Но возможно, что лучше код сделать так, чтобы вызов этого метода не вызывался бы.
Ответ написан
Комментировать
@stcmd04236
Я создаю свое исключение. Если wcf сервис то создаю исключения наследованные от FaultException.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы