回答
在您的异常导致程序退出的位置,您应该显示显示的引发的异常类型。
例如,我已经加粗异常的类型,如以下实施例报道由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)”是相关的。 –