4
A
回答
12
您可以在Rails應用程序中的任何位置執行異常處理,因爲它是Ruby的一部分,而不是Rails的一部分。不管你想要捕捉錯誤,只是把它包裝成這樣:
begin
SomethingElse.doSomething(x, y)
rescue Exception
ErrorLogger.log(Time.now, "Something went wrong!")
end
請注意,你應該總是「拯救例外」,而不僅僅是「救市」。僅僅使用「rescue」將只捕獲StandardError,它是Exception的一個子類(意思是你可能不想經歷的事情)。
而且像往常一樣,你可以做提高異常:
raise ArgumentError, "Illegal arguments!"
在你的代碼
任何地方,無論是模型或控制器。
1
除非我錯了,否則可以在Ruby中的任何地方使用錯誤處理。你想做什麼?
相關問題
- 1. 如何拯救異常中央和幹?
- 2. 「救援異常」不拯救超時::錯誤net_http
- 3. 如何在Ruby中拯救eval?
- 4. 如何「拯救與編碼」
- 5. 拯救和UserDefaults
- 6. 拯救Django FormWizard
- 7. Ruby錯誤處理:拯救子類中的異常
- 8. 拯救Selenium WebDriver在黃瓜內部的異常大約陳述
- 9. 如何從RAM中拯救數據?
- 10. angularjs拯救textarea的
- 11. 超薄模板:如何解救異常?
- 12. 的R - 如何「拯救」裝包
- 13. 如何拯救「分」的錯誤?
- 14. 如何拯救水豚錯誤兩次?
- 15. 如何拯救紅寶石回調?
- 16. 在Rails 3.2中拯救ActiveRecord :: RecordNotUnique
- 17. FactoryBoy「創造」策略似乎並不能拯救django模型
- 18. 拯救了IO :: popen方法
- 19. 從Mysql2拯救::錯誤
- 20. 我是否必須在使用Ruby的循環內拯救異常?
- 21. 如何拯救我的截圖在Java中
- 22. 如何在Rails環境中由Rack引發時拯救URI :: InvalidURIError?
- 23. 如何在類初始化中拯救輸入
- 24. 在rails應用程序中如何拯救Moped :: Errors :: ConnectionFailure?
- 25. 從多個錯誤中拯救
- 26. Rails如何在開發模式下自動從ActiveRecord :: RecordNotFound中拯救?
- 27. RAILS 3.2:如何從「路由錯誤」頁面中拯救
- 28. 如何拯救我的文字中的TextView的android
- 29. 如何從不兼容的庫版本中拯救...(致命)ruby
- 30. Ruby on Rails的 - 如何拯救OpenURI :: HTTPError在HAML
小修正:您的第二個代碼片段中包含雙「raise」。雖然答案很好。 – Shadwell 2009-08-24 18:23:05
這不是語法錯誤或雙重提升。看到這裏:http://web.njit.edu/all_topics/Prog_Lang_Docs/html/ruby/syntax.html#raise – 2009-08-24 20:41:54
一般來說,我同意,但我不同意你的第一個代碼塊。 你不應該直接使用「救援例外」,因爲它甚至可以拯救嘗試殺死進程的信號。除非你真的確定你想讓這部分代碼免於被幹淨地殺死,否則堅持Ruby的默認行爲是有原因的。 因此,使用vanilla「rescue」通常是更好的做法,並且您的自定義錯誤類來自StandardError。 – nertzy 2009-09-14 23:03:03