【PHP8.x】getPreviousメソッドの使い方

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

作成日: 更新日:

基本的な使い方

getPreviousメソッドは、例外の連鎖において、現在の例外がスローされる直前に発生した例外を取得するために実行するメソッドです。PHPの例外処理では、ある例外が別の例外を引き起こす原因となる場合があります。このとき、後から発生した例外に、原因となった先行する例外を関連付けることができ、これを例外の連鎖と呼びます。getPreviousメソッドは、この連鎖を遡って、直接の原因となった例外オブジェクトを取得するために使用されます。この機能により、開発者はエラーの根本原因をより正確に追跡し、デバッグを効率的に行うことができます。例えば、データベース接続の失敗が原因でデータの取得に失敗した場合、データ取得の例外からデータベース接続の例外をたどることが可能になります。このメソッドは、Throwableインターフェースで定義されており、BadFunctionCallExceptionクラスは基底クラスであるExceptionを通じてこのメソッドを継承しています。メソッドを呼び出した際に、先行する例外が存在する場合はその例外オブジェクトを返しますが、存在しない場合はnullを返します。

構文(syntax)

1<?php
2
3try {
4    try {
5        // 1. 最初の例外を意図的に発生させる
6        throw new LogicException('This is the original exception.');
7    } catch (LogicException $e) {
8        // 2. 最初の例外を原因(previous)として指定し、BadFunctionCallExceptionをスローする
9        throw new BadFunctionCallException('This is the main exception.', 0, $e);
10    }
11} catch (BadFunctionCallException $e) {
12    // 3. getPrevious()メソッドで、原因となった例外を取得する
13    $previousException = $e->getPrevious();
14
15    if ($previousException !== null) {
16        // 取得した元の例外のメッセージを出力する
17        // 出力: This is the original exception.
18        echo $previousException->getMessage();
19    }
20}
21

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Throwable

このメソッドは、例外が発生する前の例外オブジェクトを返します。例外が連鎖している場合に、その連鎖をたどるために使用できます。