【Ruby3.x】catch()関数の使い方
catch関数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
catch関数は、Rubyにおいて、特定の処理ブロックから指定した場所へ一気に処理を移すための、大域脱出と呼ばれる仕組みを実行する関数です。これは、例外処理であるbegin/rescueとは異なる目的で使用されます。
catch関数はブロックを受け取り、そのブロック内でthrowメソッドが呼ばれるのを待ちます。throwメソッドは、catch関数が設定した「ラベル」と呼ばれる目印と、オプションで渡す値を引数にとります。ブロック内でthrowメソッドがそのラベルを指定して呼び出されると、現在の処理フローは中断され、対応するcatch関数が受け取ったブロックの末尾まで処理が一気にジャンプします。このとき、throwに渡された値がcatch関数の戻り値として返されます。
もしcatch関数が受け取ったブロック内でthrowメソッドが一度も呼ばれなかった場合は、ブロックは通常通り最後まで実行され、ブロック内の最後の式の評価結果がcatch関数の戻り値となります。この機能は、複数のループを一度に脱出したり、深いネスト構造から特定の条件で早期に抜け出したりするなど、複雑な制御フローを簡潔に記述したい場合に特に役立ちます。これにより、プログラムの可読性を向上させ、簡潔なコードを書くことが可能になります。
構文(syntax)
1catch(:tag_name) do 2 # ... 処理 ... 3 throw :tag_name, final_return_value 4 # ... throw以降の処理は実行されない ... 5end
引数(parameters)
tag = nil
- tag = nil: キャッチするタグを指定します。nilを指定すると、最後に定義されたcatchブロックのタグがキャッチされます。
戻り値(return)
Object
catchブロックで捕捉されなかった例外オブジェクト、またはブロックの最後の式の結果が返されます。