> we wouldnt need to throw an Exception at all, 

Exceptions should only be used for exceptions ;)

The only thing the HttpException *maybe* should do, is check whether the code passed in the ctor is a valid HTTP response status code, otherwise the API should be similar to base \Exception class. If you need to pass objects your code is wrongly designed. And the exception should be unaware of which format it might be rendered in, if at all. My € 0.02 ;)