Práctica recomendada para devolver errores en la API web de ASP.NET

Me preocupa la forma en que devolvemos los errores al cliente.

¿Devolvemos el error inmediatamente lanzando?HttpResponseException cuando obtenemos un error:

public void Post(Customer customer)
{
    if (string.IsNullOrEmpty(customer.Name))
    {
        throw new HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest) 
    }
    if (customer.Accounts.Count == 0)
    {
         throw new HttpResponseException("Customer does not have any account", HttpStatusCode.BadRequest) 
    }
}

O acumulamos todos los errores y luego enviamos de vuelta al cliente:

public void Post(Customer customer)
{
    List<string> errors = new List<string>();
    if (string.IsNullOrEmpty(customer.Name))
    {
        errors.Add("Customer Name cannot be empty"); 
    }
    if (customer.Accounts.Count == 0)
    {
         errors.Add("Customer does not have any account"); 
    }
    var responseMessage = new HttpResponseMessage<List<string>>(errors, HttpStatusCode.BadRequest);
    throw new HttpResponseException(responseMessage);
}

Este es solo un código de muestra, no importa los errores de validación ni los errores del servidor, solo me gustaría conocer las mejores prácticas, los pros y los contras de cada enfoque.

Respuestas a la pregunta(11)

Su respuesta a la pregunta