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

作成日: 更新日:

getPreviousメソッドは、例外が連鎖している場合に、現在のTypeErrorを引き起こした直接の原因である直前の例外(previous exception)を取得するメソッドです。PHPの例外処理では、ある例外を捕捉した際に、その例外を原因として新しい例外をスローできます。この仕組みを例外の連鎖と呼び、エラーの文脈を失うことなく、より抽象的な例外として処理を継続させたい場合に利用されます。例えば、内部的な処理で発生したエラーを、アプリケーション固有の分かりやすいエラーに変換して再スローする際、元のエラー情報を保持するために使われます。このメソッドを呼び出すと、前の例外として設定されたThrowableオブジェクトが返されます。もし、現在のTypeErrorに先行する例外が存在しない場合はnullを返します。そのため、返り値を利用する際にはnullチェックが推奨されます。この機能は、エラーの根本原因を特定するデバッグの過程で、例外の発生源を遡って調査するために不可欠です。TypeErrorはThrowableインターフェースを実装しているため、このメソッドを利用できます。

基本的な使い方

構文(syntax)

1<?php
2try {
3    // 最初の例外(原因)を意図的に発生させます
4    throw new InvalidArgumentException("無効な引数です。");
5} catch (InvalidArgumentException $e) {
6    try {
7        // 最初の例外をラップして、新しいTypeErrorをスローします
8        throw new TypeError("型エラーが発生しました。", 0, $e);
9    } catch (TypeError $typeError) {
10        // TypeErrorにラップされた、前の例外を取得します
11        $previousException = $typeError->getPrevious();
12
13        if ($previousException !== null) {
14            // 前の例外のクラス名を出力します
15            // 出力: InvalidArgumentException
16            echo get_class($previousException);
17        }
18    }
19}
20?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Throwable

このメソッドは、例外の連鎖で前の例外が存在する場合、その前の例外オブジェクトを返します。前の例外がない場合は、nullを返します。

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