Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】LocalJumpError::reason()メソッドの使い方

reasonメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

reasonメソッドは、LocalJumpError例外が発生した具体的な理由をシンボルとして取得するメソッドです。

LocalJumpErrorは、Rubyにおいてreturnbreaknextといった「ローカルなジャンプ」を指示するキーワードが、それらが有効ではない文脈で使用された場合に発生する組み込みの例外クラスです。例えば、メソッド定義の外でreturnを呼び出したり、繰り返し処理のブロックではない場所でbreaknextを使おうとしたりすると、この例外が発生します。

reasonメソッドは、このようなLocalJumpErrorのインスタンスに対して呼び出すことで、その例外がなぜ発生したのか、つまりどの種類のジャンプによって引き起こされたのかを識別するシンボルを返します。具体的には、returnによるものであれば:returnシンボルを、breakによるものであれば:breakシンボルを、nextによるものであれば:nextシンボルを返します。

このメソッドを活用することで、例外ハンドラ(rescueブロック)内でLocalJumpErrorを捕捉した際に、エラーの原因をプログラム的に特定し、その原因に応じたきめ細やかなデバッグ処理や回復処理、ロギングなどを行うことが可能になります。システム開発において、予期せぬジャンプエラーが発生した場合の原因究明や、堅牢なエラーハンドリングを実装する上で重要な役割を果たします。

構文(syntax)

1def create_proc_with_return
2  Proc.new { return }
3end
4
5begin
6  create_proc_with_return.call
7rescue LocalJumpError => e
8  e.reason
9end

引数(parameters)

引数なし

引数はありません

戻り値(return)

Symbol | nil

このメソッドは、LocalJumpErrorが発生した原因を示すシンボル、または原因がない場合はnilを返します。

関連コンテンツ

関連プログラミング言語