Ruby 有两种不同的异常机制:Throw/Catch 和 Raise/Rescue。
为什么我们有两个?
什么时候应该使用其中一种而不是另一种?
-
raise
, fail
, rescue
, and ensure
handle errors,也称为例外情况
-
throw
and catch
are 控制流
与其他不同
语言中,Ruby 的 throw 和 catch 不用于异常。
相反,它们提供了一种在没有任何结果时提前终止执行的方法。
还需要进一步的工作。
(格林,2011)
终止单个级别的控制流,例如while
循环,可以用一个简单的方法来完成return
。终止多个级别的控制流(例如嵌套循环)可以通过以下方式完成throw
.
虽然引发和救援的异常机制非常适合在出现问题时放弃执行,但有时在正常处理期间能够跳出某些深度嵌套的构造也很好。这就是 catch 和 throw 派上用场的地方。
(托马斯和亨特,2001)
参考
- 格林,阿夫迪。 “扔、接住、举起、营救……我很困惑!” Ruby 学习博客。 N.p.,2011 年 7 月 11 日。网络。 2012 年 1 月 1 日。http://rubylearning.com/blog/2011/07/12/throw-catch-raise-rescue--im-so-confused/ http://rubylearning.com/blog/2011/07/12/throw-catch-raise-rescue--im-so-confused/.
- 托马斯、戴夫和安德鲁·亨特。 “红宝石编程。” :实用程序员指南。 N.p.,2001。网络。 2015 年 9 月 29 日。http://ruby-doc.com/docs/ProgrammingRuby/html/tut_exceptions.html http://ruby-doc.com/docs/ProgrammingRuby/html/tut_exceptions.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)