Оператор возврата из блока catch в случае возникновения исключения из уровня репозитория? - PullRequest
0 голосов
/ 08 июля 2019

Меня немного смущает, какой ответ я должен отправлять, когда слой репозитория генерирует исключение.

У меня есть контроллер, который вызывает службу, а затем служба вызывает хранилище для возврата данных.

public class ProductController : Controller
 {

    [HttpGet]
    public IEnumerable<Product> GetProducts()
     {
        return _productService.GetAllProducts();
     }
 }


public class ProductService: IProductService
 {
   public List<Product> GetAllProducts()
    {
     return _productRepository.GetProducts();
    }
 }


public class ProductRepository: IProductRepository
  {
    public List<Product> GetProducts()
        {
            try
            {
                //database call to get products;
                }
            }
             catch(Exception ex)
            {
                log.Error("Exception occurred while calling GetProducts", ex);
                return new List<Product>();
            }
        }
  }

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

Что я думаю, так это вернуть ноль из уровня хранилища, а затем на уровне обслуживания я могу проверить, является ли ответ нулевым, тогда я могу вернуть сообщение об ошибке с пустым списком продуктов на контроллер.

или

я не должен обрабатывать исключения на уровне хранилища, а просто проверять наличие исключений на уровне обслуживания, а затем возвращать сообщение и пустой список продуктов обратно в контроллер, если возникло какое-либо исключение.

и затем контроллер может проверить, есть ли какое-либо сообщение об ошибке, затем вернуть 500 код состояния HTTP вместе с сообщением и пустым списком.

Я запутался, как правильно обрабатывать исключения и возвращать сообщение об ошибке. Как правильно вернуть сообщение об ошибке с кодом статуса HTTP?

1 Ответ

0 голосов
/ 08 июля 2019

Лучший способ заключается в том, чтобы регистрировать ту ошибку, которую вы получили в репозитории, а затем из Web API, попытаться управлять кодом состояния, чтобы клиент также обрабатывал ошибки в веб-интерфейсе.

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