How to respond with HTTP 500 on any unhandled exception in Falcon framework
Yes, it is possible. You need to define a generic error handler, check if the exception is instance of any falcon error, and if it is not, then raise your HTTP_500.
This example shows a way of doing it.
def generic_error_handler(ex, req, resp, params):
if not isinstance(ex, HTTPError):
raise HTTPInternalServerError("Internal Server Error", "Some error")
else: # reraise :ex otherwise it will gobble actual HTTPError returned from the application code ref. https://stackoverflow.com/a/60606760/248616
raise ex
app = falcon.API()
app.add_error_handler(Exception, generic_error_handler)
Accepted answer seems to gobble actual HTTPError
returned from the application code. This is what worked for me:
def generic_error_handler(ex, req, resp, params):
if not isinstance(ex, HTTPError):
logger.exception("Internal server error")
raise HTTPInternalServerError("Internal Server Error")
else:
raise ex