回答
在您的異常導致程序退出的位置,您應該顯示顯示的引發的異常類型。
例如,我已經加粗異常的類型,如以下實施例報道由IRB:
IRB(主):001:0> DEF do_it(A,B);結束; do_it(3,4,5)
引發ArgumentError:錯誤的參數數目(給定3,預期2)
從(IRB):1:在`do_it」
從(IRB):1
從/Users/meagar/.rbenv/versions/2.3.1/bin/irb:11:in`」
在此基礎上,我就知道我需要處理ArgumentError
。
如果不成功,您可以捕獲所有異常,在異常處理程序中使用調試程序檢查捕獲的異常並找出其類型,然後用正確的異常類型替換catch-all。
如前所述,重要的是要強調並重新強調我們要捕獲特定的異常,而不是通用的「異常」。如果使用Exception或者使用'rescue',那麼各種各樣的邪惡都會破裂。 –
雖然[神奇寶貝異常處理](http://programmers.stackexchange.com/questions/319088/is-indiscriminately-catching-exceptions-pokemon-exception-handling-ever-accept)通常是不被接受的,但這是一種很好的方法知道代碼正在生成的異常類型,並寫入響應。 'rescue => e',然後檢查'e.class'知道發生了什麼。 – tadman
如果不是很明顯,我並不是說**代碼中保留了全部**,我建議僅使用它來通過調試器確定要處理的正確類型的異常,然後*替換*正確的類型的全部。 – meagar
- 1. 爲什麼我在android中遇到異常
- 2. 如何找出什麼是使用windbg拋出異常
- 3. Visual Studio中遇到異常
- 4. 爲什麼我在從xml讀取元素時遇到異常
- 5. 爲什麼我在引用DataGridView CurrentRow時遇到異常?
- 6. 爲什麼我在使用multiprocessing.Pool時遇到異常?
- 7. 我如何找到爲什麼我得到「異常的類型'System.Web.HttpUnhandledException'被拋出」?
- 8. 異常處理:什麼異常提出
- 9. JSONEncoder.encode在Swift中拋出什麼異常?
- 10. OleDB異常:無法找到可安裝的ISAM異常,出了什麼問題?
- 11. 文件未找到異常。有什麼可能出錯?
- 12. 爲什麼會出現「異常:(404,u'Not找到')」用肥皂水
- 13. 爲什麼在java中拋出異常而在C++中拋出異常?
- 14. 如何找到System.ExecutionEngineException異常
- 15. parseuser.SignUpAsync()拋出什麼異常?
- 16. 什麼是拋出異常
- 17. jsoup.element.select()拋出什麼異常?
- 18. Newtonsoft.Json.DeserializeObject拋出什麼異常?
- 19. 異常在Ruby中
- 20. 如何防止MEF在找不到導出時拋出異常?
- 21. 爲什麼我得到異常異常?
- 22. Ruby Enumerator - 爲什麼以異常結束?
- 23. Ruby異常 - 爲什麼「其他」?
- 24. 爲什麼我會遇到:com.paypal.sdk.exceptions.TransactionException異常:(403)禁止
- 25. 處理SqlConnection,SqlDataReader,SqlCommand時會遇到什麼異常?
- 26. 有誰知道我爲什麼會遇到空異常錯誤?
- 27. 我不知道我爲什麼會遇到越界異常?
- 28. 爲什麼我會遇到輸入不匹配異常?
- 29. 爲什麼以下導致Visual Studio遇到異常
- 30. 爲什麼在路徑中找不到異常SignTool.exe?
「[替代'救援例外'](http://stackoverflow.com/a/18596924/128421)」是相關的。 –