コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyで例外のキャッチをワンライナーで書くこともできる

あんまり書く機会がないのでメモ

環境

ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin22]

構文

公式ドキュメント曰く

{{式1}} rescue {{式2}}

の形式で書くことができ、以下と同義になる

begin
  {{式1}}
resuce
  {{式2}}
end

公式ドキュメントにも言及があるが、ワンライナーの場合はrescueの後に記述するErrorTypeを指定することができない。そのためStandardErrorのサブクラスである全ての例外をすくい上げることにはなる。もし特定のエラーを拾いたい場合にこの記述方法は採用できないので注意。

以下のように書くことでエラーを補足することができる。

def demo
  p "テストです"
  1 / 0 rescue p "なんか例外がおきました"
end

関連リンク