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

# 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 例外として報告されるようになりました。 これらもこのハンドラで扱うことになるでしょう。Error と Exception は、どちらも 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() の例

`<?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";
?>`

### 参考

- restore_exception_handler() - 以前の例外ハンドラ関数を回復する
- restore_error_handler() - 以前のエラーハンドラ関数を回復する
- error_reporting() - 出力する PHP エラーの種類を設定する
- callback 型に関する情報
- PHP 5 例外