我真的没有看到这些的理智用途.已经有救援和提高了,所以为什么需要扔和抓?似乎他们应该被用来跳出深层次的嵌套,但是这只是闻起来像一个goto给我.有没有这些好的,干净使用的例子?
解决方法
注意:在1.9中,catch / throw看起来有些改变了.这个答案适用于
Ruby 1.9.
一个很大的区别是,你可以抛出任何东西,而不仅仅是派生自StandardError的东西,而不像加注.像这样愚蠢的事情是合法的,例如:
throw Customer.new
但这不是非常有意义的.但你不能做:
irb(main):003:0> raise Customer.new TypeError: exception class/object expected from (irb):3:in `raise' from (irb):3 from /usr/local/bin/irb:12:in `<main>'