【PHP8.x】previousプロパティの使い方
作成日: 更新日:
previous
プロパティは、現在の例外が発生する前に投げられた、元の例外やエラーを保持するプロパティです。これにより、複数の例外が連続して発生した際に、最初の原因となった例外までを辿ることができる「例外の連鎖(Exception Chaining)」を実現します。
たとえば、データベース操作でエラーが発生し、それが原因で上位のビジネスロジックでさらに別の例外が投げられた場合を考えてみましょう。このとき、ビジネスロジックの例外オブジェクトのprevious
プロパティには、データベース操作で発生した元の例外オブジェクトが保持されます。開発者は、このprevious
プロパティを辿っていくことで、問題の根本原因となった最初の例外やエラーを特定し、デバッグ作業を効率的に進めることができます。
このプロパティの値は、Exception
クラスまたはそれを継承するクラスのコンストラクタの第3引数として、Throwable
インターフェースを実装したオブジェクトを渡すことで設定されます。PHP 8
では、この引数は型指定されており、Throwable
型のオブジェクトまたはnull
を受け入れます。もし前の例外がない場合や、コンストラクタで指定されなかった場合は、null
が保持されます。
previous
プロパティは読み取り専用であり、一度設定された値を後から変更することはできません。これは、例外オブジェクトの発生履歴と整合性を保証するために重要な設計です。
基本的な使い方
構文(syntax)
1<?php 2 3$initialException = new Exception("最初の例外"); 4$wrappedException = new Exception("ラップされた例外", 0, $initialException); 5 6$previous = $wrappedException->previous; 7 8?>
引数(parameters)
戻り値(return)
?Throwable
Exception クラスの previous プロパティは、現在の例外が前の例外から連鎖している場合に、その前の例外オブジェクト(Throwable 型)を返します。前の例外がない場合は null を返します。