Php/docs/function.set-exception-handler

提供:Dev Guides
< Php
移動先:案内検索

set_exception_handler

(PHP 5, PHP 7)

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


説明

set_exception_handler ( callable $exception_handler ) : callable

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


パラメータ

exception_handler

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

handler ( Exception $ex ) : void

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

handler ( Throwable $ex ) : void

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

警告

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


返り値

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


変更履歴

バージョン 説明
7.0.0 exception_handler に渡すパラメータの型が、

Exception から Throwable に変わりました。

5.5.0 これより前のバージョンでは、null を渡した場合の返り値が true でした。

PHP 5.5.0 以降は、以前に設定されていたハンドラを返すようになります。


例1 set_exception_handler() の例

<?phpfunction exception_handler($exception) {  echo "Uncaught exception: " , $exception->getMessage(), "\n";}set_exception_handler('exception_handler');throw new Exception('Uncaught Exception');echo "Not Executed\n";?>

参考