There was a mistake there, the Timeout::Error line should say
["timeout error", lambda { raise Timeout::Error, "hello" }],
You're right that this isn't a subclass of StandardError and isn't
caught. It's a subclass of Interrupt. You can argue whether that was a
good design decision or not - but since a Timeout::Error means that a
thread was aborted mid-way at some arbitrary point, it's definitely an
unusual case.
There are plenty of posts about why the entire timeout library is broken
anyway.
--
Posted via http://www.ruby-forum.com/.