I tried to understand both and write sample code:
public HttpResponseMessage Get() { var response = ControllerContext.Request
HttpResponseException is useful when your Controller Action signature looks like
Foo Get(int id)
In this case, you cannot easily return status code like 400.
Be aware that HttpResponseMessage is going away in the next release of Web API.
HttpResponseMessage