gpt4 book ai didi

ruby-on-rails - 什么应该返回 Grape rescue_from :all block?

转载 作者:数据小太阳 更新时间:2023-10-29 09:01:03 24 4
gpt4 key购买 nike

Grape 文档说:
rescue_from block 必须返回一个 Rack::Response 对象,调用错误!或重新引发异常。

但是如果我们只使用 rescue_from 方法来记录事情并且我们想保留原始的 HTTP 响应我们应该返回什么?

如果我重新抛出捕获的异常,它不会保持原来的行为。例如,我的一些测试生成了 400 响应,但带有:

rescue_from :all do |e|
Rails.logger.error(e)
raise e
end

他们捕获了 500 个响应。

我发现重现原始行为的更好解决方案是这段代码:

rescue_from :all do |e|
Rails.logger.error(e)
if e.respond_to?(:status)
error!(e.to_json, e.status, e.headers, e.backtrace)
else
error! "Internal Server Error"
end
end

我应该检查捕获的异常是否响应 status,因为它可能是一个 RuntimeError,而 RuntimeError 不响应 status

我这样做对吗?或者有更好的解决方案吗?

最佳答案

关于ruby-on-rails - 什么应该返回 Grape rescue_from :all block?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com