> > I was just caught out by this odd behaviour: a 'rescue' clause doesn't
> > generate an error if given a non-exception class. I had actually written
> >   rescue Timeout
> > which was silently accepted but didn't work. Actually it should have been
> >   rescue TimeoutError
> 
> Modules also are allowed there.

... and a class is_a module. Obviously, a class which is a subclass of
Exception is useful here. But is it ever useful to match against a class
which is not a subclass of Exception?

Regarding the point about when to perform the check: I would do it when an
exception is raised. Perhaps raising a different exception while processing
an exception handler is bad form, but maybe a warning to stderr would be in
order.

begin
  x = String
  raise StandardError
rescue x               # Generate a warning here during exception matching?
  puts "Never reached"
end

Regards,

Brian.