Testscript:

----------------------------------------------------------------

 require "my_lazy"

 class Thing
   attr :prop

   def initialize
     @prop      = lazy {@prop = expensive_load}
   end

   def expensive_load
     p :expensive_load

     raise "BOOM"       # Optionally

     7*8
   end
 end

 thing  = Thing.new

 3.times do
   begin
     p thing.prop
   rescue Exception => e
     p [e.message, e.backtrace]
   end
 end

----------------------------------------------------------------