【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 を返します。

【PHP8.x】previousプロパティの使い方 | いっしー@Webエンジニア