Rubyで例外を起こすためのraiseとfailの違い

こんにちは!kossyです!




さて、今回はRubyで例外を起こすためのraiseとfailの違いについて、
ブログに残してみたいと思います。




環境
Ruby 2.6.3
MacOS catalina



両者に違いはない

調べてみましたが、raiseとfailには処理の違いはないようです。

Rubyスタイルガイドでは、raiseを使うことを推奨しているようです。



irbでも挙動を確かめてみました。

# StandardError例外をthrow

irb(main):001:0> fail StandardError
Traceback (most recent call last):

StandardError (StandardError)

irb(main):002:0> raise StandardError
Traceback (most recent call last):

StandardError (StandardError)

# 第二引数を渡しても挙動は一緒

fail StandardError, 'エラーです'
Traceback (most recent call last):

StandardError (エラーです)

irb(main):004:0> raise StandardError, 'エラーです'
Traceback (most recent call last):

StandardError (エラーです)

チームのコーディング規約に従うべきだとは思いますが、
Rubyコミュニティで一般的なのはraiseメソッドの方みたいなので、
特にこだわりがなければraiseメソッドの方を使えばいいかと思います。




勉強になりました。



参考にさせていただいた記事


この場を借りて御礼を申し上げます。