PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

【PHP】set_exception_handler()関数の使い方とサンプルコードを解説

set_exception_handler()関数とは

set_exception_handler()関数は、例外を処理するためのユーザー定義関数を、デフォルトの例外ハンドラとして設定します。try/catchブロック内で例外が捕捉されなかった場合に備えて、あらかじめグローバルな例外ハンドラを登録しておくことができます。

キャッチされない例外が発生すると、ここで設定した例外ハンドラが呼び出され、その後スクリプトの実行は停止します。

構文

set_exception_handler(exception_handler)

パラメータ

  • exception_handler − キャッチされない例外が発生した際に呼び出される関数の名前を指定します。この関数は、set_exception_handler()を呼び出すに定義しておく必要があります。また、ハンドラ関数は1つの引数を受け取る必要があり、この引数にはスローされた例外オブジェクトが渡されます。

戻り値

set_exception_handler()関数は、以前に定義されていた例外ハンドラの名前を返します。エラーが発生した場合はNULLを返します。さらに、以前のハンドラがまだ定義されていなかった場合にもNULLが返されます。

使用例

以下は、set_exception_handler()関数を使用したサンプルコードです。

<?php
    function exception_handler($exception) {
        echo "Uncaught exception = " , $exception->getMessage(), "\n";
    }
    set_exception_handler('exception_handler');
    throw new Exception('Not Found Exception');
    echo "not included Executed\n";
?>

コードの解説

この例では、まずexception_handler()という関数を定義し、受け取った例外オブジェクトからgetMessage()メソッドでエラーメッセージを取得して表示しています。

次に、set_exception_handler()を使ってこの関数をデフォルトの例外ハンドラとして登録します。その後、throw new Exception()によって意図的に例外をスローしていますが、try/catchブロックで囲まれていないため、登録済みの例外ハンドラが自動的に呼び出されます。

ハンドラの実行後はスクリプトの処理が終了するため、最後のecho文は実行されない点に注意してください。

出力結果

上記のコードを実行すると、次のように表示されます。

Uncaught exception = Not Found Exception
  1. PHPのlog10()関数とは?常用対数の計算方法と具体例をわかりやすく解説

    定義と使用方法log10() 関数は、数値の常用対数(底が10の対数)を計算するための関数です。常用対数は「10を底とする対数」とも呼ばれ、log10x を求める際に使用されます。自然対数との間には、次のような関係式が成り立ちます。log10x = logex / loge10この式に基づけば、たとえば次のように計算できます。log10100 = loge100 / loge10 = 2PHPでは、この常用対数の計算を log10() 関数が担っています。構文log10 ( float $arg ) : floatパラメータ番号パラメータと説明1arg常用対数(底10の対数)を計算したい数値を

  2. PHPのrestore_exception_handler()関数とは?使い方と実行例を解説

    PHPのrestore_exception_handler()関数は、直前に設定されていた例外ハンドラを復元するための関数です。set_exception_handler()を使って例外ハンドラ関数を変更した後、この関数を呼び出すことで、以前の例外ハンドラ(組み込みのハンドラまたはユーザー定義関数)に戻すことができます。例外ハンドラはスタックのように管理されているため、set_exception_handler()を複数回呼び出した場合、restore_exception_handler()を実行するたびに、一つ前のハンドラへと順番に戻っていきます。構文restore_exception_ha