On Mon, Feb 16, 2009 at 11:21 PM, matt neuburg firstname.lastname@example.org wrote:
Instead it turns out to mean: catch a certain subset of exceptions. It
doesn’t catch LoadError, it doesn’t catch SyntaxError, etc. etc.
Of course now I know better (and I commonly write “rescue Exception”),
but it still feels wrong, especially in view of the “principle of least
surprise”. And I see by a quick Google search that people regard this as
an annoying “gotcha”. Is it worth proposing an actual change in the
language - that the default rescue be Exception instead of
No, I don’t think so. The distinction between StandardErrors and the
is carefully thought out, and makes sense.
Exceptions which are not StandardErrors representation situations which
normally not handled by a ‘normal’ Ruby program, either because it’s
better to handle it the standard way (e.g. a SignalException because
issued a kill command, or a SystemExit exception), or difficult for the
program to recover from (e.g. ScriptErrors, and NoMemoryErrors).
The fact that you can explicitly rescue these exceptional exceptions
that you don’t HAVE to let them be handled in the standard way, but you
still have to carefully consider how that rescue clause needs to be
Also, if feel the need to rescue one or more of these low level
I it’s usually wise to rescue them specifically rather than rescuing
Exception in general.