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

【Python3.x】StopIteration::__context__定数の使い方

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

作成日: 更新日:

基本的な使い方

__context__プロパティは、Pythonの組み込み例外であるStopIterationクラスのインスタンスが保持するプロパティです。StopIteration例外は、イテレータが反復処理を完了し、これ以上取得できる要素がないことを示すために送出される特別な例外です。

この__context__プロパティは、StopIteration例外が、別の何らかの例外によって引き起こされた場合に、その元の例外(直接の原因となった例外)を保持する役割を持っています。これはPythonの「例外連鎖(Exception Chaining)」という仕組みの一部であり、一つの例外が別の例外の発生を誘発した際に、その関連性を明確にし、根本原因を追跡しやすくするために設計されています。

例えば、ジェネレータ関数やイテレータ内部で予期せぬエラーが発生し、そのエラーが原因でイテレータの処理が停止し、最終的にStopIteration例外が送出されるような状況が考えられます。このような場合、__context__プロパティには、StopIterationを引き起こすきっかけとなった最初のエラー例外が格納されます。これにより、デバッグ時には、単にStopIterationが発生したことだけでなく、その背後にある本来の問題を効率的に特定し、修正作業を進める上で非常に役立ちます。

構文(syntax)

1try:
2    raise StopIteration("Iteration completed.")
3except StopIteration as e:
4    context_exception = e.__context__

引数(parameters)

引数なし

引数はありません

戻り値(return)

Optional[BaseException]

イテレータが反復処理の終わりに達した際に、例外処理コンテキスト(try...except...finallyブロックなど)で捕捉された例外オブジェクト、または例外が発生しなかった場合はNoneを返します。

関連コンテンツ