So we must build an entire class just for sake of more specific rescue
statements:

class MyError < StandardError
end

try_counter = 0
begin
 try_counter += 1
 puts 'Here 1'
 raise MyError.new "Text" unless try_counter > 5
 puts 'Here 2'
rescue MyError
 puts 'Here 3 - MyError encountered'
 retry
rescue StandardError
 puts "Here 4 - Other error encountered (#{$!.inspect})" +
caller.inspect
 raise
else
 puts 'Here 5 - No errors'
ensure
 puts 'Here 6 - Always done'
end


On Sep 16, 4:02 pm, Frederick Cheung <frederick.che...@gmail.com>
wrote:
> On Sunday, September 16, 2012 7:57:44 PM UTC+1, John Merlino wrote:
>
> >   class ActionNotFound < StandardError #:nodoc:
> >   end
>
> > unless action_name = method_for_action(action_name)
> >   raise ActionNotFound, "The action '#{action}' could not be found for
> > #{self.class.name}"
> > end
>
> > But why even bother to create the subclasses (which as shown above,
> > have no definition of themselves), when substituting ActionNotFound
> > with StandardError during the raise call will have the same effect.
>
> Because it doesn't have the same effect. Raising specific subclasses allows
> you to write targeted rescue clauses rather than rescuing indiscriminately.
>
> Fred

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to