有没有办法Falcon框架以 HTTP 500 状态响应任何未在资源处理程序中处理的非特定异常?我尝试为异常添加以下处理程序:
api.add_error_handler(Exception,
handler=lambda e,
*_: exec('raise falcon.HTTPInternalServerError("Internal Server Error", "Some error")'))
但这使得无法抛出,例如 falcon.HTTPNotFound
— 它由上面的处理程序处理,我收到 500 而不是 404。
最佳答案
是的,这是可能的。您需要定义一个通用错误处理程序,检查异常是否是任何猎鹰错误的实例,如果不是,则引发您的 HTTP_500。
这个例子展示了一种方法。
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)
关于python - 如何使用 HTTP 500 响应 Falcon 框架中任何未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39570652/