Chaz Meyers (cpm) wrote,
Chaz Meyers
cpm

Overthinking the problem, or another post where I forget the demographics of my readership.

I was writing some trivial yet repetitive error-handling code when it occurred to me it would be cool if ruby had a feature to define a method that didn't increase the call-stack, such that you could have a new scope but could also return or terminate directly from the calling function. Sort of like the following pseudo-code...

class A
  attr_accessor :check_errors

  def initialize
    @check_errors = Proc.new do |something|
      return something if something.kind_of? Exception
      if something.respond_to? :each
        bad = something.detect { |thing| thing.kind_of? Exception }
        return bad if bad
      end
    end
  end
end

class B < A
  def maybe_erronous
    # do stuff...

    self.check_errors(questionable)

    # do more stuff...
  end
end

Except the code would actually work. If you define a Proc like that it raises a LocalJumpError exception.

Then I remembered I could just re-raise the exception and catch it in the calling code. Duh.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments