In Ruby you can write a rescue at the end of an assignment to catch any errors that might come up. I have a function (below: a_function_that_may_fail) where it’s convenient to let it throw an error if certain conditions aren’t met. The following code works well
post = {}
# Other Hash stuff
post['Caption'] = a_function_that_may_fail rescue nil
However I’d like to have post[‘Caption’] not even set if the function fails.
I know I can do:
begin
post['Caption'] = a_function_that_may_fail
rescue
end
but that feels a little excessive – is there a simpler solution?
The problem is precedence. The simplest solution:
Changing the precedence like this is a little esoteric, though. It would probably be better if you can rewrite your
a_function_that_may_failto returnnilif it fails.You could also use a temporary variable and test for nilness:
A really minor difference is that this does not set
post['Caption']ifa_function_that_may_faildid not raise an exception but returnednil.