Ruby exception overhead

I’ve been seeing various bits and pieces mentioning the overhead Ruby’s
(and other languages’) exception handling adds to a program (eg.
comments on, and

Is that overhead incurred even if the exception is not raised? That is;
the negatives are only felt if the exception is raised, and so should
not be used for normal program flow control, or is it better to avoid
begin…rescue…end blocks wherever possible (if trying to improve your


That’s the wrong approach to improving performance. Measure first, then
change. In most cases the real bottleneck is not where you expected it
to be.

If you have a begin…rescue…end block inside a very tight loop
executed thousands of times then maybe it would be worth removing it -
but on the other hand, if you end up replacing it with more if… tests
and method calls, then you could end up making it slower anyway.