我的Grape应用有几个错误处理程序,最后包括:
rescue_from :all, backtrace: true do |e|
message = { errors: { all: e.message } }
rack_response(format_message(message, e.backtrace), 500 )
end
但这至少不能挽救Grape用
处理的错误throw :error
内部。我如何挽救这些错误?所记录的特定错误是"请求的格式' txt'不受支持"和"未找到:some_path"。如果格式扩展程序丢失或只有“'”,则会出现这些错误。分别提供。
答案 0 :(得分:1)
你没有拯救抛出的条件。他们将直接进入错误处理程序,因为rescue
用于raise
d错误,而不是抛出条件。 throw
不会创建与raise
完全相同的对象,也无法以相同的方式处理。
但是,您可以使用error_formatter
格式化错误消息:
module CustomErrorFormatter
def self.call message, backtrace, options, env
{ errors: { all: message.to_s } }.to_json
end
end
在主应用程序中:
error_formatter :json, CustomErrorFormatter