2013-11-10 22:08:22 +0900
Rubyにおけるraiseとfailの使い分けについて。
久々にrubocopを動かしたら、
app/models/user.rb:139:7: C: Use `fail` instead of `raise` to signal exceptions.
raise Exceptions::AlreadyChecked, msg
^^^^^
こんな感じで、raise
じゃなくてfail
を使え、みたいな警告が結構出た。
2つのキーワードの使い分けについてちょっと調べてみたところ、Exceptional Rubyというスライドの10枚目「raise (or fail)」にて、Jim Weirich氏による以下のようなコメントが引用されていた。
I almost always use the "fail" keyword… the only time I use "raise" is when I am catching an exception and re-reaising it, because here I'm not failing, but explicitly and purposefully raising an exception. – Jim Weirich
rescue
などで捕捉した例外を再度発生させる時には「何かがfailなわけではないので」raise
を用い、それ以外の場合はfail
を用いる、というような使い分けのパターンがあるようだ。