-1

すべてのエラーをキャッチし、そのタイプに応じて、ある種の操作を実行したいと思います。次の種類のエラーを処理したいと思います。

  • 通知
  • 警告
  • エラー
  • 重大なエラー
  • アラート
  • 緊急事態

set_error_handler()関数でこれらを実行できますか?

また、E_USER_WARNINGとE_WARNINGに違いはありますか?

4

1 に答える 1

3

PHPマニュアルから派生した簡単な例を次に示します。

<?php
error_reporting(0);
set_error_handler('handle_error', E_ALL);
function handle_error($errno, $errmsg, $filename, $linenum, $vars) {
    $errors = array(
        E_ERROR              => 'Error',
        E_WARNING            => 'Warning',
        E_PARSE              => 'Parsing Error',
        E_NOTICE             => 'Notice',
        E_CORE_ERROR         => 'Core Error',
        E_CORE_WARNING       => 'Core Warning',
        E_COMPILE_ERROR      => 'Compile Error',
        E_COMPILE_WARNING    => 'Compile Warning',
        E_USER_ERROR         => 'User Error',
        E_USER_WARNING       => 'User Warning',
        E_USER_NOTICE        => 'User Notice',
        E_STRICT             => 'Runtime Notice',
        E_RECOVERABLE_ERROR  => 'Catchable Fatal Error'
    );
    if(in_array($errno, array_keys($errors))) {
        echo $errors[$errno];
    }
}
$foo = NOT_DEFINED;

エラータイプを出力します。

于 2012-11-22T22:23:57.197 に答える