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

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

作成日: 更新日:

基本的な使い方

getPreviousメソッドは、例外が連鎖している場合に、現在の例外を引き起こした直前の例外(先行する例外)を取得するために実行するメソッドです。PHPの例外処理では、ある処理の失敗が原因で別の失敗を引き起こすことがあります。このような状況で、catchブロック内で捕捉した例外を原因として新しい例外をスローする際、元の例外を新しい例外に紐付けることができます。これを例外チェーンと呼びます。getPreviousメソッドは、この例外チェーンを遡るために使用されます。現在のRangeExceptionオブジェクトが、別の例外が原因でスローされた場合にこのメソッドを呼び出すと、その原因となった先行する例外オブジェクトを返します。これにより、エラーの根本的な原因を特定し、デバッグを効率的に行うことが可能になります。もし、先行する例外が存在しない、つまり例外チェーンの起点である場合は、このメソッドはnullを返します。このメソッドは、Exceptionクラスの親であるThrowableインターフェースで定義されているため、RangeExceptionだけでなくPHPのすべての例外オブジェクトで使用することができます。

構文(syntax)

1<?php
2
3$previous = new InvalidArgumentException("無効な引数です。");
4
5try {
6    throw new RangeException("値が範囲外です。", 0, $previous);
7} catch (RangeException $e) {
8    // getPrevious() を使って、連鎖された前の例外を取得します。
9    $previousException = $e->getPrevious();
10
11    if ($previousException instanceof Throwable) {
12        // 前の例外のクラス名とメッセージを出力します。
13        // 出力:
14        // InvalidArgumentException
15        // 無効な引数です。
16        echo get_class($previousException) . PHP_EOL;
17        echo $previousException->getMessage();
18    }
19}
20
21?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Throwable

RangeクラスのgetPreviousメソッドは、前の例外オブジェクトを返します。例外が連鎖している場合に、その連鎖をたどるために使用されます。前の例外が存在しない場合は、nullを返します。

【PHP8.x】getPreviousメソッドの使い方 | いっしー@Webエンジニア