1. エラーと例外の処理
1.1 エラーの種類と基本的なデバッグ方法
??PHP プログラムのエラーは、通常、次の 3 つの領域に分類されます。構文エラーは最も一般的であり、修正が簡単です。たとえば、コードにセミコロンがありません。このようなエラーにより、スクリプトの実行が妨げられます。
??ランタイム エラー:
??この種のエラーは通常、PHP スクリプトの実行を妨げませんが、現在行われている処理は妨げられます。エラーが出力されますが、php スクリプトは実行を続けます
?? ロジック エラー:
?? この種のエラーは、スクリプトの実行を妨げたり、エラー メッセージを出力したりすることがないため、最も厄介です。
??例外とは、プログラムの実行中に発生する例外またはイベントであり、通常の命令の実行を中断し、他のプログラム モジュールにジャンプして実行を継続します。
PHPのエラーレポートレベル
??E_ALL //すべてのメッセージ値: 6143
??E_ERROR //致命的な実行時エラー値: 1
??E_RECOVERABLE_ERROR //致命的に近い実行時エラー、捕捉されなかった場合は E_ERROR とみなされます 値: 4096
??E_WARNING //実行時警告 (致命的ではないエラー) 値: 2
??E_PARSE //コンパイル時解析エラー値: 4
??E_NOTICE //実行時のリマインダー (バグであることが多く、意図的な場合もあります) 値: 8
??E_STRICT //コーディング標準化の警告 (上位互換性のために推奨される変更方法) 値: 2048
??E_CORE_ERROR / /PHP 起動初期化プロセス中の致命的なエラー値: 16
??E_CORE_WARNING //PHP 起動初期化プロセス中の警告 (致命的ではないエラー) 値: 32
??E_COMPILE_ERROR // コンパイル時の致命的なエラー値: 64
??E_COMPILE_WARNING //コンパイル時警告 (致命的ではないエラー) 値: 128
??E_USER_ERROR //ユーザー定義の致命的エラー値: 256
?? E_USER_WARNING //ユーザー定義の警告 (致命的でないエラー) 値: 512
??E_USER_NOTICE //ユーザー定義のリマインダー(バグが多い) 値: 1024
php.ini設定ファイル
display_errors: PHP出力の機能を有効にするかどうかエラーレポート
?? 値は次のとおりです: On (デフォルトの出力エラーレポート)、Off (すべてのエラーメッセージをブロック)
?? ini_set() 関数は PHP スクリプトで呼び出すことができ、php を動的に設定します。 ini 設定ファイル。
??例: ini_set("display_errors","On"); //すべてのエラー メッセージを表示します
??error_reporting: さまざまなエラー レポート レベルを設定します。
??error_reporting= E_ALL & ~E_NOTICE
-- 目立たないエラーをスローできます。デフォルト値
??error_reporting= E_ERROR E_PARSE | E_CORE_ERROR
-- 致命的なランタイムのみがエラーとみなされます。新しい解析エラーとコアエラー。
??error_reporting= E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE)
-- ユーザー原因のエラーを除くすべてのエラーをレポートします。
??エラー報告レベルは、PHP スクリプトの error_reporting() 関数を通じて動的に設定できます。例: error_reporting(E_ALL);]
エラー レベルを設定します 例: error.php<span><h2>测试错误报告</h2>
<?<span>php
</span><span>/*</span><span>开启php.ini中的display_errors指令,只有该指令开启如有错误报告才能输出</span><span>*/</span><span>ini_set(</span><span>'</span><span>display_errors</span><span>'</span>,<span>1</span><span>);
</span><span>/*</span><span>通过error_reporting()函数设置在本脚本中,输出所有级别的错误报告</span><span>*/</span><span>error_reporting(E_ALL);
</span><span>/*</span><span>“注意(notice)”的报告,不会阻止脚本的执行,并且不一定是一个问题</span><span>*/</span><span>getType($</span><span>var</span>);<span>//</span><span>调用函数时提供的参数变量没有在之前声明</span><span>/*</span><span>“警告(warning)”的报告,指示一个问题,但是不会阻止脚本的执行</span><span>*/</span><span>getType();</span><span>//</span><span>调用函数时没有提供必要的参数</span><span>/*</span><span>“错误(error)”的报告,它会终止程序,脚本不会再向下执行</span><span>*/</span><span>get_Type();</span><span>//</span><span>调用一个没有被定义的函数</span>?></span>
PHP エラー報告動作の構成手順
display_startup_errors= Off
??するかどうかPHP エンジンを表示します。初期化中にエラーが発生しました。
??log_errors= On
??ログステートメントを記録する場所を決定します。
??error_log (デフォルトは null)
??エラーが書き込まれるファイルを指定するか、システム ログ syslog にエラー ログを記録します。
??Log_errors_max_len=1024
??各ログ エントリの最大長 (バイト単位)。 0 は最大を意味します。
1.2 エラーログ
エラーログを記録する 2 つの方法:
??指定したファイルを使用してエラーレポートログを記録します
??エラーログはオペレーティングシステムのログに記録されます
使用 指定されたファイルにエラーレポートログが記録されます
1. 最初にphp.iniを設定します:
??error_reporting= E_ALL//すべてのエラーはPHPに送信されます
??display_errors=Off//エラー レポートを表示しません
??log_errors=On//ログ ステートメントの記録場所を決定します。
??log_errors_max_log=1024//各ログ項目の最大長
??error_log=G:/myerror.log//エラーが書き込まれるファイルを指定します
?? 2. 関数を使用します: php ファイル内で error_log() を使用してログを記録すると、情報を myerror.log ファイルに書き込むことができます
??例: error_log("Login failed!");
2 を使用します。 Logging への関数:
??define_syslog_variables();//システム ログの設定を初期化します
??openlog();//ログのリンクを開きます
??syslog();//ログを送信します
例<span><?<span>php
</span><span>if</span>(!<span>Ora_Logon($username, $password)){
error_log(</span><span>"</span><span>Oracle数据库不可用!</span><span>"</span>, <span>0</span><span>);
</span><span>//</span><span>将错误消息写入到操作系统日志中</span><span>}
</span><span>if</span>(!($foo=<span>allocate_new_foo()){
error_log(</span><span>"</span><span>出现大麻烦了!</span><span>"</span>, <span>1</span>, <span>"</span><span>webmaster@www.mydomain.com</span><span>"</span>); <span>//</span><span>发送到管理员邮箱中</span><span>}
error_log(</span><span>"</span><span>搞砸了!</span><span>"</span>,<span>2</span>, <span>"</span><span>localhost:5000</span><span>"</span><span>);
</span><span>//</span><span>发送到本机对应5000端口的服务器中</span>error_log(<span>"</span><span>搞砸了!</span><span>"</span>, <span>3</span>, <span>"</span><span>/usr/local/errors.log</span><span>"</span><span>);
</span><span>//</span><span>发送到指定的文件中</span>?></span>
<span><?<span>php define_syslog_variables(); openlog(</span><span>"</span><span>PHP5</span><span>"</span><span>, LOG_PID , LOG_USER); syslog(LOG_WARNING, </span><span>"</span><span>警告报告向syslog中发送的演示,警告时间:</span><span>"</span>.date(<span>"</span><span>Y/m/dH:i:s</span><span>"</span><span>)); closelog(); </span>?></span>
ログの表示: たとえば、Windows システムでは、[マイ コンピュータ] を右クリックし、[管理オプション] を選択し、[システム ツール] メニューで [イベント ビューア] を選択し、[アプリケーション オプション] をクリックしてログを表示できます。
1.3 例外処理
Exception (例外) 処理は、指定されたエラーが発生したときにスクリプトの通常のフローを変更するために使用されます。これは PHP5 の重要な新機能です。例外処理は、拡張可能で保守が容易なエラー処理の統合メカニズムであり、新しいオブジェクト指向のエラー処理メソッドを提供します。
??例外処理形式:
try{
例外が発生する可能性のあるコードを含めるには try を使用します。
例外が発生したら、例外をキャプチャして処理のためにキャッチに渡します。
例外をスローするステートメント: 例外オブジェクトをスローします。
}catch (例外オブジェクトパラメータ) {
例外処理はここで行われます。
}[キャッチ(.,,){
.. .. ..
}]
上記は、PHP_Error と Exception Handling - php (32) の一般的な関数ブロックを内容も含めて紹介しています。PHP チュートリアルに興味のある友人の役に立てば幸いです。