Begin Rescue not catching error
rescue
without a parameter just rescues exceptions that inherit from StandardError
. To rescue a SyntaxError
use rescue SyntaxError
.
To rescue all exceptions you would use rescue Exception
, but note that that's a bad idea (which is why it's not the default behavior of rescue
) as explained here and here. Especially this part:
Rescuing Interrupt prevents the user from using CTRLC to exit the program.
Rescuing SignalException prevents the program from responding correctly to signals. It will be unkillable except by kill -9.
rescue
without any parameter accepts exceptions raised by StandardError class. Your error type is SyntaxError which is inherited from a different class called ScriptError. All these error classes are subclasses of Exception class. So as sepp2k suggested use rescue Exception
to catch all kinds of exceptions.