set_exception_handler

(PHP 5, PHP 7, PHP 8)

set_exception_handler ユーザー定義の例外ハンドラ関数を設定する

説明

set_exception_handler(callable|null$callback): string|array|object|null

例外が try/catch ブロックの中でキャッチされなかった場合の デフォルトの例外ハンドラを設定します。 実行は、callback がコールされた後に 停止します。

パラメータ

callback

キャッチされない例外が発生した際にコールされる関数の名前。 このハンドラ関数は、パラメータをひとつとる必要があります。 このパラメータは、スローされた例外オブジェクトとなります。 PHP 7 より前のバージョンでは、ハンドラのシグネチャは、次のようになります。

handler(Exception$ex): void

PHP 7 からは、大半のエラーが Error 例外として報告されるようになりました。 これらもこのハンドラで扱うことになるでしょう。ErrorException は、どちらも Throwable インターフェイスを実装しています。 PHP 7 以降のハンドラのシグネチャは、次のようになります。

handler(Throwable$ex): void

null を渡すと、このハンドラをデフォルトの状態に戻せます。

警告

コールバックの ex パラメータにタイプヒントとして Exception を明示すると、 PHP 7 での例外の階層の変更に伴う問題が発生することに注意しましょう。

返り値

前に定義された例外ハンドラを返します。 エラー発生時に null を返します。 前にハンドラが定義されていない場合にも null が返されます。

例1 set_exception_handler() の例

<?php
function exception_handler($exception) {
  echo 
"Uncaught exception: " $exception->getMessage(), "\n";
}

set_exception_handler('exception_handler');

throw new 
Exception('Uncaught Exception');
echo 
"Not Executed\n";
?>

参考