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.