【Ruby3.x】UncaughtThrowError::value()メソッドの使い方
valueメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
valueメソッドは、UncaughtThrowErrorオブジェクトが保持する、キャッチされなかったthrowの値を取得するメソッドです。
UncaughtThrowErrorは、Rubyのcatchおよびthrowという特殊な制御フロー機構において、throwが実行されたにもかかわらず、それに対応するcatchブロックが存在しなかった場合に発生するエラークラスです。catchとthrowは、例外処理とは異なり、プログラムの実行を特定の地点にジャンプさせるためのメカニズムとして使用されます。throwは、引数としてシンボルなどの任意の値を伴って実行され、その値を受け取ることができる最も近いcatchブロックまでプログラムの実行をジャンプさせます。
しかし、もしthrowされた値に対応するcatchブロックが現在の実行コンテキスト内で見つからなかった場合、RubyはUncaughtThrowErrorを発生させ、プログラムは中断されます。このvalueメソッドを使用すると、UncaughtThrowErrorオブジェクトから、当時throwされた「値」が何であったかを取り出すことができます。
例えば、throw :exit_programのようにthrowが実行され、それがプログラムのどこにもcatchされずにエラーが発生した場合、UncaughtThrowErrorインスタンスのvalueメソッドを呼び出すと、:exit_programというシンボルが返されます。この機能は、プログラムが予期せずUncaughtThrowErrorによって終了した際に、どの値が原因でエラーが発生したのかを特定し、デバッグやエラーハンドリングの改善を行う上で非常に役立ちます。エラーの原因を深掘りするために重要な情報を提供するメソッドです。
構文(syntax)
1begin 2 throw :tag, "thrown_value" 3rescue UncaughtThrowError => e 4 e.value 5end
引数(parameters)
引数なし
引数はありません
戻り値(return)
Object
このメソッドは、捕捉されなかったthrowによって発生した例外オブジェクトが保持する値を返します。