Chaz Meyers (cpm) wrote,
Chaz Meyers

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 = 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

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


    # do more stuff...

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.

  • My tweets

    Sun, 01:39: RT @ dinoman_j:

  • My tweets

    Mon, 00:15: In a randoms Among Us discord, people were going "POGGERS" and I ask, "Hey, are any of you old enough to remember the game "pogs"…

  • My tweets

    Sun, 11:55: RT @ computerfact: everyone thinks theyre the plumber but in reality we're all just turtles minding our own business waiting to be…

  • Post a new comment


    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.