Hartin, Brian wrote:
> I could not find any information about this, except regarding DRb.
> 
> It seems like the raise method / Exception class ought to allow me to
> pass in a 'causal' exception, e.g.
> 
> begin
>   foo
> rescue Exception => e
>   raise ServiceNotFoundException, "The service could not be contacted",
> e
> end

The second arg to raise (i.e. the message) can be any object:

class ServiceNotFoundException < StandardError; end

begin
   begin
     raise "foo"
   rescue Exception => e
     raise ServiceNotFoundException, ["The service could not be contacted",
   e]
   end
rescue Exception => e_outer
   puts e_outer
   p e_outer.message
end

__END__

Output:

#<ServiceNotFoundException:0xb7d9b75c>
["The service could not be contacted", #<RuntimeError: foo>]

-- 
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407