我最近就raise
与throw
进行了讨论。有another SO thread discussing this,专家们总结了这种情况:
throw
的优点是你可以轻易扔掉任何东西,并且你不会浪费时间把堆栈跟踪放在一起这给我留下了一个问题,为什么没有人在Ruby中实际使用throw?前面讨论的线程提到在Sinatra中使用catch / throw来处理HTTP错误代码,但是,我仍然看到很少的catch / throw示例,我只在我自己的代码中使用过一次。正如目前的Rails安全危机所显示的那样,Ruby社区广泛忽略了重要的功能(在这种特殊情况下为$ SAFE级别)。那么catch / throw有什么用?