title: Best practice for error handling with ASP.NET Web API
body: <p>Could you clarify what is the best practice with Web API error management. Actually, I don't know if it is a good practice to use try catch into my Api request.</p>
  
  <pre><code>public Vb.Order PostOrderItem(Vb.Order order)
  {
      if (OAuth.isValid(Request.Headers.GetValues("Token").Single()) != true)
      {
          HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.Unauthorized);
          throw new HttpResponseException(httpResponseMessage);
      }
      if (!ModelState.IsValid)
      {
          HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.BadRequest);
          throw new HttpResponseException(httpResponseMessage);
      }
  
      try
      {
          return Vb.Document.Generate(order);
      }
      catch (Exception ex)
      {
          logger.Error(ex);
          HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.BadRequest);
          httpResponseMessage.Content = new StringContent(ex.Message);
          throw new HttpResponseException(httpResponseMessage);
      }
  
  }
  </code></pre>
  
  <p>I have the feeling using try catch to a server side code is not a good practice because I just log my catch en re-throw an exception.</p>