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