I was wondering how to catch exceptions of any kind in Ruby. Well You just use begin rescue
pair, without specifying what kind of exceptions do You want to catch. This perfectly gets all exceptions. But when You want to use some information, like exception name written to user, You have to declare some variable. But what type? Well simplest solutions are not always obvious, at least for me ;-)
Use Exception
class which is parent for all exception instances… Ughh been stuck on such easy thing is a shame :)
begin # code # code rescue Exception => msg puts "Something went wrong ("+msg+")" end
Update
2008-01-10
There is much better way to do this, omit Exception
in rescue and it will catch all exceptions
begin # code # code rescue => msg puts "Something went wrong ("+msg+")" end
That’s useful thanks
You should probably fix the spelling of ‘rescue’ though :-)
Oh, indeed :) Fixed ;)
The spelling is still wrong lol
@asd
Strange. Fixed it again (?)
According to wikipedia (I know…), the update isn’t correct:
”
It is a common mistake to attempt to catch all exceptions with a simple rescue clause. To catch all exceptions one must write:
begin
# Do something
rescue Exception
# don’t write just rescue — that only catches StandardError, a subclass of Exception
# Handle exception
end
”
http://en.wikipedia.org/wiki/Ruby_(programming_language)#Exceptions
J.
Well, looks like You are right. But it is strange. I would swear I did tests before I wrote that. Anyway –
rescue Exception => e
is right way…the ruby way to interpolate strings like:
“Something went wrong (“+msg+”)”
is
“Something went wrong (#{msg})”