我有点困惑,只要存储库层抛出异常,我应该发回什么响应。
我有一个控制器,该控制器调用服务,然后服务调用存储库以返回数据。
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>();
}
}
}
如果我返回新列表,则如果数据库返回空数据集,响应是相同的,但是如果发生任何异常,我想从控制器返回不同的响应。
我在想从存储库层返回null,然后在服务层中我可以检查响应是否为null,然后可以向控制器返回错误消息,其中包含空的产品列表。
或
我不应该在存储库层中处理异常,而只是在服务层中检查异常,然后如果发生任何异常,则将消息和产品的空列表返回给控制器。
然后控制器可以检查是否有任何错误消息,然后返回500 HTTP状态代码以及消息和空列表。
我很困惑处理异常和返回错误消息的正确方法是什么。用HTTP状态代码返回错误消息的正确方法是什么?
答案 0 :(得分:0)
最好的方法是记录您在存储库中遇到的错误,然后从Web API尝试管理状态代码,以便客户端也可以处理前端中的错误。