On 11/8/06, Paul Lutus <nospam / nosite.zzz> wrote:
> Leslie Viljoen wrote:
>
> > I have a script that needs to run unattended every night, and I need
> > to log if it throws an exception anywhere. Is this as simple as
> > putting a begin..rescue..end around the top-most statements? I know
> > that doesn't work in C#. Is there a hook or some way that a catch-all
> > is supposed to be done in Ruby?
> >
> > Les
>
> This should catch everything, AFAIK:
>
> begin
>   ...
> rescue Exception => err
>   puts err
> end
>
> If there is nothing but function calls between "begin" and "rescue", e.g. if
> the entire executable block lies there, this should do it.

You should put this begin...rescue...end around each thread body you
start, unless you set
Thread.abort_on_exception = true. Otherwise exceptions in other
threads might get lost.

Finally I'll mention that rescue without parameter rescues only
StandardError, and therefore doesn't catch all Exceptions.