How do I get a return value from catch to be sent as a response via Ring and Jetty?

Note that it doesn’t mean whatever finally returns. Instead, it means the last expression in the catch form. The value returned by finally can never be used.

Can’t say for certain without seeing the rest of the code, but unless you have some middleware that turns arbitrary maps into proper responses, your handler does not actually return a proper response. A Ring response, according to the Ring’s spec, is a map with at least the following keys: :body, :headers, :status.