1
我試圖很好地處理使用Sinatra的錯誤。例如,說我有這樣一個塊:如何在Sinatra中使用HTTP錯誤代碼輸出錯誤消息?
get '/auth/' do
...
begin
access_token_obj = OAuth2::AccessToken.new(client, token)
rescue OAuth2::Error => e
return 403, e.description
rescue
return 403, "Something went wrong"
end
...
end
我想顯示一個很好的錯誤頁面給用戶。該西納特拉文檔建議我可以這樣做:
error 403 do
"Access forbidden"
end
但我怎麼得到錯誤信息(「出事了」或e.description
)顯示給用戶?在我的error 403 do
區塊中沒有可用的env['sinatra.error']
。我顯然錯過了一些東西(我對ruby有點新鮮)。
在'錯誤403做'?在那裏,'body'對我來說是一個空陣列。 –
奇怪的是,我可以在6行腳本中找到它。只要在'error 403 do'內返回'inspect'而不是''Access forbidden'',看看你是否能在任何地方找到你的錯誤信息。 –
啊......如果我用'return 403,e'替換'return 403,e.description',那麼我會在'body'中得到一個'OAuth2 :: Error'對象。但我無法弄清楚如何從中獲取錯誤信息。 –