B、カスタムエラーとエラートリガー
1. エラー ハンドラー (カスタム エラー、通常は構文エラーの処理に使用されます)
少なくとも 2 つのパラメーター (error_level と errormessage) を処理できる必要がありますが、最大 5 つのパラメーター (error_file、error_line、error_context) を受け入れることができるカスタム エラー関数 (ハンドラー) を作成します
文法:
関数 error_function($error_level,$error_message,$error_file,$error_line,$error_context)
//作成後、set_error_handler() 関数を書き直す必要があります
;
set_error_handler('error_function',E_WARNING); //ここで、error_function は上で作成したカスタム ハンドラー名に対応し、2 番目のパラメーターはカスタム エラー ハンドラーを使用するエラー レベルです。
エラー報告レベル(理解するだけ)
これらのエラー レポート レベルは、エラー ハンドラーが処理するように設計されているさまざまな種類のエラーです。
値定数の説明
2 E_WARNING 致命的ではない実行時エラー。スクリプトの実行を一時停止しないでください。
8 E_NOTICE 実行時通知。
スクリプト検出エラーが発生する可能性がありますが、スクリプトが正常に実行されているときに発生することもあります。
256 E_USER_ERROR ユーザーが生成した致命的なエラー。これは、プログラマが PHP 関数trigger_error()を使用して設定する E_ERROR に似ています。
512 E_USER_WARNING 致命的ではないユーザー生成の警告。これは、プログラマが PHP 関数 trigger_error() を使用して設定する E_WARNING に似ています。
1024 E_USER_NOTICE ユーザーが生成した通知。これは、プログラマが PHP 関数trigger_error() を使用して設定する E_NOTICE に似ています。
4096 E_RECOVERABLE_ERROR トラップ可能な致命的なエラー。 E_ERROR と似ていますが、ユーザー定義のハンドラーによってキャッチされる可能性があります。 (set_error_handler() を参照)
8191 E_ALL レベル E_STRICT を除くすべてのエラーと警告。
(PHP 6.0 では、E_STRICT は E_ALL の一部です)
2. エラー トリガー (通常、論理エラーを処理するために使用されます)
要件: たとえば、年齢を受け取りたい場合、数値が 120 より大きい場合、エラーとみなされます
伝統的な方法:
if($年齢>120){
echo '年齢が間違っています';exit();
}
トリガーを使用する:
if($年齢>120){
//trigger_error('error message'[,'error level']);ここでのエラー レベルはオプションであり、エラーのレベルを定義するために使用されます
//ユーザー定義レベルには次の 3 つのタイプがあります: E_USER_WARNING、E_USER_ERROR、E_USER_NOTICE
trigger_error('age error');//これは呼び出し側システムのデフォルトのエラー処理メソッドであり、カスタムプロセッサを使用することもできます
}
//カスタムプロセッサ、上記と同じ
関数 myerror($error_level,$error_message){
「エラーテキスト」をエコーします
}
//同時に、システムのデフォルト処理関数を変更する必要があります
set_error_handler('myerror',E_USER_WARNING);//上記と同様、最初のパラメータはカスタム関数の名前、2 番目のパラメータはエラー レベルです [ここでのエラー レベルは通常、次の 3 つです: E_USER_WARNING、E_USER_ERROR、E_USER_NOTICE ]
//trigger_error を使用してカスタム エラー処理関数を使用できるようになりました
練習問題:
コードは次のとおりです
コードをコピー
|
|
date_default_timezone_set('PRC');
関数 myerror($error_level,$error_message){
$info= "エラー番号: $error_leveln";
$info.= "エラーメッセージ: $error_messagen";
$info.= '発生時刻:'.date('Y-m-d H:i:s');
$ファイル名='aa.txt';
if(!$fp=fopen($filename,'a')){
'ファイルの作成'.$filename.'失敗しました';
}
if(is_writeable($filename)){
if(!fwrite($fp,$info)){
echo 'ファイルの書き込みに失敗しました';
} その他 {
echo 'エラーメッセージは正常に記録されました';
}
fclose($fp);
} その他 {
echo 'ファイル'.$ファイル名.'書き込み不可';
}
終了();
}
set_error_handler('myerror',E_WARNING);
$fp=fopen('aaa.txt','r');
?>
1 2
http://www.bkjia.com/PHPjc/632215.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/632215.html
技術記事 |
PHP で最も一般的に使用されるエラー メカニズムは、簡単にエラーをキャッチできる try catch{} です。ただし、PHP では、多くのエラー表示とエラー終了も提供しています。