如何在没有开始和结束块的情况下使用Ruby进行救援

我知道有一个开始救援结束的标准技术

一个人如何使用自己的救援块。

它是如何工作的,它如何知道哪些代码被监控?

“def”方法可以作为“开始”语句:

def foo ... rescue ... end 

你也可以内联救援:

 1 + "str" rescue "EXCEPTION!" 

将打印出“EXCEPTION!” 因为'string不能被强制转换成Fixnum'

我使用ActiveRecordvalidation的def / rescue组合很多:

 def create @person = Person.new(params[:person]) @person.save! redirect_to @person rescue ActiveRecord::RecordInvalid render :action => :new end 

我认为这是非常精益的代码!

例:

 begin # something which might raise an exception rescue SomeExceptionClass => some_variable # code that deals with some exception ensure # ensure that this code always runs end 

在这里,作为一个begin语句:

 def # something which might raise an exception rescue SomeExceptionClass => some_variable # code that deals with some exception ensure # ensure that this code always runs end