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.