如果出现异常,如何指定全局救援,如果将Sinatra用于API或应用程序,如何处理日志记录?
答案 0 :(得分:6)
404s可以在not_found
方法的帮助下处理,例如:
not_found do
'Site does not exist.'
end
可以通过使用块调用error方法来处理500s,例如:
error do
"Application error. Pls try later."
end
可以通过sinatra.error
中的request.env
访问错误的详细信息,如下所示:
error do
'An error occured: ' + request.env['sinatra.error'].message
end
答案 1 :(得分:5)
我无法在开发环境中开箱即用 - 为了让它工作,我必须在我的sinatra配置中将show_exceptions
设置为false。
class BaseApp < Sinatra::Base
configure { set :show_exceptions, false }
error do |err|
raise "Error: #{err}"
end
end
此设置设置为true时,会启用在出现无法处理的异常时显示回溯和环境信息的错误页面,但我只能通过禁用它来触发自定义错误。