如何在没有开始和结束块的情况下使用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