Ruby 有两种不同的异常机制:Throw/Catch 和 Raise/Rescue。
为什么我们有两个?
什么时候应该使用一个而不是另一个?
我认为http://hasno.info/ruby-gotchas-and-caveats对差异有一个不错的解释:
接/投与举/救不同。catch/throw 允许您将块快速退出到为特定符号定义捕获的点,引发救援是涉及 Exception 对象的真正异常处理内容。