Najlepsza praktyka do zwracania błędów w interfejsie API ASP.NET

Mam obawy co do sposobu, w jaki zwracamy błędy klientowi.

Czy zwracamy błąd natychmiast, rzucającHttpResponseException kiedy otrzymamy błąd:

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) 
    }
}

Lub gromadzimy wszystkie błędy, a następnie odsyłamy do klienta:

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);
}

To tylko przykładowy kod, nie ma znaczenia ani błędy walidacji, ani błąd serwera. Chciałbym tylko poznać najlepsze praktyki, wady i zalety każdego podejścia.