le_*_*_me 27 ruby error-handling sinatra
我在我的sinatra应用程序中执行了以下操作:
disable :show_exceptions
disable :raise_errors
error do
haml :error, :locals => {:error_message => request.env['sinatra.error'].to_s}
end
get '/error' do
raise "ERROR!!"
end
Run Code Online (Sandbox Code Playgroud)
如果我访问/error我得到一个500 - Internal Server Error响应代码,这是上帝和想要的.但是如何将代码更改为404或501?
答案:
disable :show_exceptions
disable :raise_errors
get '/error' do
halt(404,haml(:error, :locals => {:error_message => request.env['sinatra.error'].to_s}))
end
Run Code Online (Sandbox Code Playgroud)
Sea*_*ond 23
像是一样raise 404会引发错误raise ZeroDivisionError,这会导致您的应用程序抛出500内部服务器错误.返回特定错误的最简单方法是使用status
get '/raise404' do
status 404
end
Run Code Online (Sandbox Code Playgroud)
您还可以添加自定义响应正文 body
get '/raise403' do
status 403
body 'This is a 403 error'
end
Run Code Online (Sandbox Code Playgroud)
我在块中使用它
如果“条件”那么 做点什么 其他 停止500,“错误消息” 结束 #只有没有错误 erb:my_template
如果发生错误,我的日志就是这样的
HTTP / 1.1“ 500 13 0.1000
| 归档时间: |
|
| 查看次数: |
19397 次 |
| 最近记录: |