ホームページ  >  記事  >  バックエンド開発  >  PHPエラー処理メカニズム

PHPエラー処理メカニズム

高洛峰
高洛峰オリジナル
2017-01-03 15:06:511559ブラウズ

日々のプロジェクト開発プロセスでは、予期しない異常なエラーが常に発生します。これに比較的適切に対処しないと、プログラムは非常にプロフェッショナルに見えず、他の人にとってはシステム攻撃になる可能性があります。エラー例外によってスクリプトの実行が終了します。この時点でエラー メッセージが表示されない場合は、コードを最初から確認することしかできません。なんとも恐ろしいことです。では、プロジェクト開発中に例外やエラーを迅速かつ正確に特定し、それに応じて処理するにはどうすればよいでしょうか?そしてお互いに思い出として。

システムエラーハンドラー:

PHPの通常の状況では、エラーは正常に出力されますが、一部のフレームワークでは、フレームワーク自体が独自の処理機構を持っているか、エラー出力に影響を与える可能性があります。コードでは、一般に次の関数設定を行います:

1.error_reporting(); PHP のエラー報告レベルを設定し、現在のレベルを返します

error_reporting(report_level)

パラメーター レベルが指定されていない場合は、現在のエラー報告レベルが戻ってきます。以下の項目は、level の可能な値です:

PHP 错误处理机制

ここで、$level が 0 の場合、エラー出力がオフになる、つまりエラーが出力されないことに注意してください。

2.set_error_handler()

定義と使用法

set_error_handler() 関数は、ユーザー定義のエラー処理関数を設定します。

この関数は、実行時にユーザー独自のエラー処理メソッドを作成するために使用されます。

この関数は古いエラー ハンドラーを返すか、失敗した場合は null を返します。

構文

set_error_handler(error_function,error_types)

PHP 错误处理机制

ヒント: この関数を使用すると、標準の PHP エラー処理関数は完全にバイパスされ、必要に応じてユーザー定義のエラー ハンドラーを終了する必要があります (die())。 ) スクリプト、

注: スクリプトの実行前にエラーが発生した場合、その時点ではカスタム プログラムが登録されていないため、カスタム エラー ハンドラーは使用されません。

テストコードは次のとおりです:

/**
 *
 * @param type $error_level 错误级别
 * @param type $error_message    错误信息
 * @param type $error_file 可选 错误文件
 * @param type $error_line 可选 错误行
 * @param type $error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。
 */
function my_error($error_level, $error_message, $error_file, $error_line, $error_context) {
  echo date('Y-m-d H:i:s') . $error_level . $error_message . $error_file . $error_line;
  var_dump($error_context);
}
set_error_handler('my_error', E_ALL);
print_r($a);

//上記のケースから、my_errorメソッドを登録すると、システムは元のエラー処理error_fuction()メソッドを自動的に上書きすることがわかります

カスタムエラートリガー

定義と使用法

trigger_error() 関数は、ユーザー定義のエラー メッセージを作成します。

trigger_error() は、ユーザーが指定した条件下でエラー メッセージをトリガーするために使用されます。これは、組み込みエラー ハンドラー、または set_error_handler() 関数で作成されたユーザー定義関数とともに使用されます。

不正なエラータイプが指定された場合、この関数は false を返し、それ以外の場合は true を返します。

構文

trigger_error(error_message,error_types)

PHP 错误处理机制

テストコードは次のとおりです:

/**
 *
 * @param type $level
 * @param type $msg
 */
function my_error($level, $msg) {
  switch ($level) {
  case E_USER_ERROR:
    echo "ERROR:<br/>";
    break;
  case E_USER_WARNING:
    echo "WARNING:<br/>";
    break;
  case E_USER_NOTICE:
    echo "NOTICE:<br/>";
    break;
  default:
    break;
  }
  echo "错误编号:" . $level . " <br/>";
  echo "错误信息:" . $msg;
}
//注册错误处理器
set_error_handler(&#39;my_error&#39;);
if (89 > 8) {
  //调用错误触发器
  trigger_error(&#39;这是错误啊&#39;, E_USER_WARNING);
}

実行結果は次のとおりです:

警告:
エラー番号: 512
エラーメッセージ: これはエラーです

以上です。これがこの記事のすべての内容です。皆さんに気に入っていただければ幸いです。

PHP エラー処理メカニズムに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。