Here's my proposal:
we have a responde-media-type in the controller for the developer to switch the response rendering.
The response media type is either filled by the http accept header of the file extension (clients will most probably not ask for feeds.xml and send http header for json)

the controller methods return a response object - the dev can use response classes by the framework or the self implemented ones

same for exceptions:
an exception ctor has the status code and a response object which will be rendered into the real response.