ホームページ  >  記事  >  バックエンド開発  >  PHP エラー処理メカニズム、PHP 処理メカニズム_PHP チュートリアル

PHP エラー処理メカニズム、PHP 処理メカニズム_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:47:13859ブラウズ

PHP エラー処理メカニズム、PHP 処理メカニズム

日々のプロジェクト開発プロセスでは、予期しない異常なエラーが常に発生します。これを比較的適切に処理しないと、プログラムは非常に見栄えの悪いものになります。専門的でない場合は、他の人がシステムを攻撃するための有効な情報になる可能性があります。現時点でエラー メッセージがない場合は、コードを確認するだけです。プロジェクトに何百行ものエラーがあることは、私たちにとって非常に恐ろしいことであることを最初から認識しておく必要があります。プロジェクト開発プロセス中に例外やエラーを迅速かつ正確に特定するにはどうすればよいでしょうか。この記事はエラーや例外を自分で処理していますので、皆さんと共有してお互いの学びを兼ねてメモとして残しておきたいと思います。

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

PHP の通常の状況では、エラーは正常に出力されますが、一部のフレームワークでは、フレームワーク自体が独自の処理メカニズムを持っているか、コード内 (通常はこれらの関数) で処理される可能性があります。設定:

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

エラーレポート(レポートレベル)

パラメータレベルが指定されていない場合は、現在のエラーレベルが返されます。レベルに使用できる値は次のとおりです:

64E_USER_警告致命的ではないユーザー生成の警告。プログラマーが PHP の E_STRICTE_RECOVERABLE_ERROR

価値

定数

説明

1

E_エラー

致命的なランタイムエラー。このエラーは再利用できません。スクリプトの実行が中断されました。

2

E_警告

致命的ではない実行時警告。スクリプトの実行は中断されません。

4

E_PARSE

コンパイル時間分析エラー。解析エラーはアナライザーによってのみ生成されるべきです

8

E_NOTICE

実行時通知。見つかったスクリプトはバグである可能性がありますが、スクリプトの実行時に通常どおりに発生する可能性もあります

16

E_CORE_ERROR

PHP起動時の致命的なエラー。これは PHP のコアの E_ERROR のようなものです

32

E_CORE_WARNING

PHP

起動時の警告。これは、PHPのコアのE_WARNINGのようなものです

E_COMPILE_ERROR

致命的なコンパイル時エラー。これは、Zend スクリプト エンジンを渡して E_ERROR

を生成するのと同じです

128

E_COMPILE_WARNING

致命的ではないコンパイル時の警告。 Zendスクリプトエンジン経由でE_WARNING

を生成するようなものです

256

E_USER_エラー

ユーザーが生成した致命的なエラー。PHP 関数 trigger_error() を使用してプログラマが設定したエラーに類似しています。 512

関数を使用して設定するものに似ています。

1024 E_USER_NOTICE

ユーザー生成の通知。PHP 関数を使用してプログラマが設定した通知に似ています。 2048

実行時通知。

PHP
コードの相互運用性と互換性を高めるためのコードへの変更案

4096

キャッチ可能な致命的なエラー。

E_ERROR
に似ていますが、ユーザー定義のハンドラーによってキャッチできます(

set_error_handler()
を参照)

8191

E_ALL

レベル E_STRICT を除くすべてのエラーと警告 (PHP6.0 では、E_STRICTE_ALL の一部になります)

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

2.set_error_handler()

定義と使用法

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

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

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

文法

set_error_handler(error_function,error_types)

パラメータ

説明

エラー関数

必須。エラーが発生したときに実行する関数を指定します。

エラーの種類

オプション。ユーザー定義エラーをどのエラー報告レベルで表示するかを指定します。デフォルトは「E_ALL」です。

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

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

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

リーリー

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

上記のプログラムを実行した結果:

カスタムエラートリガー

定義と使用法

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

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

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

文法

trigger_error(error_message,error_types)

パラメータ

説明

エラーメッセージ

必須。エラーメッセージを指定します。長さ制限は

1024 文字です。

エラーの種類

可选。规定错误消息的错误类型。 可能的值:

  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE
测试代码如下:
/**
 *
 * @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('my_error');
if (89 > 8) {
  //调用错误触发器
  trigger_error('这是错误啊', E_USER_WARNING);
}

运行结果如下:

WARNING:
错误编号:512
错误信息:这是错误啊

以上所述就是本文的全部内容了,希望大家能够喜欢。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1027497.htmlTechArticlePHP 错误处理机制,php处理机制 在日常的项目开发过程中,总是会出现一些我们意想不到的异常错误,如果我们对此没有进行相对完善的处...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。