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

PHPのset_error_handler()関数とは?使い方と実例をわかりやすく解説

set_error_handler()関数とは

set_error_handler()は、PHPの標準エラー処理を置き換えるためにユーザー定義のエラーハンドラ関数を設定できる組み込み関数です。この関数を利用すると、エラー発生時の挙動を自由にカスタマイズでき、独自のログ記録やカスタムエラー画面の表示などが実現できます。

戻り値は、以前に設定されていたエラーハンドラの名前を含む文字列です。事前にハンドラが定義されていなかった場合や、処理中にエラーが発生した場合はNULLが返されます。

構文

set_error_handler ( error_handler, error_types );

パラメータ

  • error_handler − エラー発生時に実行されるコールバック関数を指定します。この関数には、次の引数が順に渡されます。
    ・$errno … エラーレベル(整数値)
    ・$errstr … エラーメッセージ
    ・$errfile … エラーが発生したファイル名
    ・$errline … エラーが発生した行番号

  • error_types − ユーザー定義エラーハンドラを適用するエラーレポートレベルを指定します。デフォルトは「E_ALL」です。「E_WARNING | E_NOTICE」のようにビット演算子で複数のレベルを組み合わせることも可能です。

戻り値

以前に定義されていたエラーハンドラ(存在する場合)の名前を含む文字列を返します。ハンドラが未定義の場合やエラー発生時にはNULLを返します。

使用例

次の例では、独自のエラーハンドラ「customError」を定義し、trigger_error()で意図的にエラーを発生させています。

<?php
// ユーザー定義のエラーハンドラ関数
function customError($errno, $errstr, $errfile, $errline) {
    echo "Custom error: [$errno] $errstr\n";
    echo "Error on line $errline in $errfile\n";
    echo "Ending Script";
    die();
}

// エラーハンドラを設定
set_error_handler("customError");

$test = 0;

// エラーを意図的に発生させる
if ($test > -1) {
    trigger_error("A custom error has been triggered");
}
?>

出力結果

Custom error: [1024] A custom error has been triggered
Error on line 16 in /home/cg/root/1531703/main.php
Ending Script

解説

trigger_error()によってE_USER_NOTICEレベルのエラーが発生すると、set_error_handler()で登録されたcustomError()が自動的に呼び出されます。ハンドラ内ではエラー番号・メッセージ・ファイル名・行番号を受け取り、必要な処理を実行した後にdie()でスクリプトを終了しています。

注意点

  • set_error_handler()では、E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNINGなどの致命的なエラーは捕捉できません。これらは標準のエラー処理に任されます。

  • error_typesでレベルを限定すれば、特定の種類のエラーのみをカスタムハンドラで処理することもできます。

  1. PHPのuser_error()関数とは?使い方とサンプルコードを解説

    user_error() 関数は、PHP の trigger_error() 関数のエイリアス(別名)です。ユーザーが任意にエラー条件を発生させるために使用され、PHP 組み込みのエラーハンドラと組み合わせることも、set_error_handler() で登録したユーザー定義のエラーハンドラ関数と併用することもできます。 なお、この関数は trigger_error() と完全に同じ動作をするため、現在では可読性の観点から trigger_error() を使うことが推奨されています。 構文 user_error(error_msg, error_type) パラメータ error_msg

  2. PHPのerror_get_last()関数とは?使い方と実行例をわかりやすく解説

    error_get_last()関数は、PHPスクリプト内で最後に発生したエラーを連想配列として取得するための組み込み関数です。エラーログを出力せずに、プログラム側で直近のエラー内容を確認したい場合に便利な関数です。 取得できる連想配列のキー この関数が返す連想配列には、次の4つのキーが含まれています。 type — エラーの種類(型)を表す message — エラーメッセージの内容を表す file — エラーが発生したファイル名を表す line — エラーが発生した行番号を表す 構文(シンタックス) error_get_last() パラメータ この関数にはパラメータはありません。 戻