Ruby Oneline Rescue

后端 未结 2 1273
遇见更好的自我
遇见更好的自我 2021-02-18 18:58

I recently learned that you can use rescue on a line of code in case something goes wrong on that line (see http://www.rubyinside.com/21-ruby-tricks-902.html Tip #2

相关标签:
2条回答
  • 2021-02-18 19:51

    Reads good! But it will hit your performance. In my experience rescue is much slower when triggered and slightly slower when it's not. In all cases the if is faster. Other thing to consider, is that exceptions shouldn't be expected and you kind of are with this code. Having a hash so deeply nested might be a good smell that a refactoring is nede

    0 讨论(0)
  • 2021-02-18 19:53

    This specific example can now be achieved with Ruby 2.3's dig method.

    name = obj.dig 'key', 'key2', 'name'
    

    This will safely access obj['key']['key2']['name'], returning nil if any step fails.

    (In general, it's usually advised to use exceptions only for real, unanticipated, errors, though it's understandable in an example like this if the syntax makes it cumbersome.)

    0 讨论(0)
提交回复
热议问题