Best Practice: Try vs Rescue
ruby, ruby-on-rails
Solution
Try and rescue serve different purposes. The purpose of `try` is to save you from having to do:
if user && user.email
Or any situation where the parent object can possibly be nil, which would cause a NoMethodError on NilClass. The purpose of `rescue` is to handle exceptions that get thrown by your method invocation. If you expect an exception from calling `user.email`, then you can `rescue nil` it to prevent the exception from bubbling up.
In general, I'd say avoid using `rescue nil` unless you know explicitly what exceptions you are rescuing because you could be rescuing a different exception, and you would never know it because `rescue nil` would prevent you from seeing it. At the very least maybe you could log it:
begin
...some code...
rescue => ex
logger.error ex.message
end
Problem
What is a best practice? To use `try` or use `rescue`? ``` user.try(:email) ``` VS ``` user.email rescue nil ``` ``` post.try(:comments).try(:first).try(:author) ``` VS ``` post.comments.first.author rescue nil ``` Is there any difference in using any of these?