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

【Ruby3.x】Object::SystemStackError定数の使い方

SystemStackError定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

SystemStackError定数は、Rubyプログラムの実行中にC言語レベルのスタック領域が使い果たされたことを示すエラーを表す定数です。このエラーは、メソッドが別のメソッドを呼び出す際に利用されるメモリ領域であるスタックが、許容される上限を超えて使用された場合に発生します。最も一般的な原因は、無限再帰呼び出しです。例えば、自分自身を繰り返し呼び出すメソッドが終了条件を持たない場合、スタックにメソッド呼び出しの記録が際限なく積まれていき、最終的にスタックオーバーフローを引き起こします。

このエラーが発生すると、Rubyインタプリタはプログラムの実行を継続できなくなり、通常はプログラムが異常終了します。SystemStackErrorは、Rubyの組み込み例外クラスであるExceptionのサブクラスの一つですが、StandardErrorのサブクラスではありません。そのため、一般的なエラーを捕捉するrescue StandardErrorでは捕捉できない点に注意が必要です。プログラムでこのエラーを意図的に捕捉し、特定の処理を行いたい場合は、rescue SystemStackErrorのように明示的に指定する必要があります。これは、通常プログラマが予期しない深刻な問題を示しているため、安易に捕捉して続行すべきではないケースが多いからです。プログラムの設計を見直し、再帰処理の終了条件を確認することが重要です。

構文(syntax)

1raise SystemStackError, "スタックオーバーフローが発生しました。"

引数(parameters)

引数なし

引数はありません

戻り値(return)

SystemStackError

SystemStackError は、Ruby の実行中にスタックオーバーフローが発生した場合に発生する例外オブジェクトです。この例外が発生したことを示すために、SystemStackError クラスのインスタンスが返されます。

関連コンテンツ

関連プログラミング言語