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

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

作成日: 更新日:

基本的な使い方

getPreviousメソッドは、現在の例外がスローされる原因となった、直前の例外を取得するために実行するメソッドです。PHPでは、ある処理で例外が発生した際に、その例外を捕捉(catch)し、より具体的な情報を持つ新しい例外をスローすることができます。このとき、元の例外情報を失わないように、新しい例外を生成するコンストラクタの第3引数に元の例外オブジェクトを渡すことで、例外を数珠つなぎにできます。この仕組みを「例外チェーン」と呼びます。getPreviousメソッドは、この連鎖された一つ前のThrowableオブジェクトを返します。これにより、多層的な処理のどこで根本的な問題が発生したのかを正確に追跡することが可能となり、デバッグ作業を効率化できます。もし連鎖している前の例外が存在しない場合、このメソッドはnullを返します。UnexpectedValueExceptionクラスはExceptionクラスを継承しているため、この便利なメソッドを利用できます。

構文(syntax)

1<?php
2
3try {
4    // 最初の例外を発生させる
5    try {
6        throw new InvalidArgumentException('無効な引数です。');
7    } catch (InvalidArgumentException $e) {
8        // 最初の例外をラップして、新しい例外をスローする
9        throw new UnexpectedValueException('予期しない値です。', 0, $e);
10    }
11} catch (UnexpectedValueException $e) {
12    // getPrevious() で、ラップされた元の例外を取得する
13    $previousException = $e->getPrevious();
14
15    if ($previousException) {
16        echo "現在の例外: " . $e->getMessage() . "\n";
17        echo "先行する例外: " . $previousException->getMessage() . "\n";
18    }
19}
20
21?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Throwable

このメソッドは、例外が発生する直前に発生した例外オブジェクトを返します。例外が発生していない場合は、nullを返します。