ホームページ >バックエンド開発 >PHPチュートリアル >PHP カスタム エラー処理関数_PHP チュートリアル

PHP カスタム エラー処理関数_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:11:041035ブラウズ

PHP 開発では、通常、PHP の組み込みエラー処理メソッドを使用して一部のエラーを処理しますが、一部のエラーについては、システム独自のエラー処理メソッドでは解決できない問題を解決するために、いくつかのエラー処理メカニズムをカスタマイズする必要があります。

基本的なエラー処理: die() 関数を使用します
最初の例は、テキスト ファイルを開く単純なスクリプトを示しています:

コードは次のとおりです コードをコピー
$file=fopen("welcome.txt","r");
?>

ファイルが存在しない場合は、次のようなエラーが表示されます:

警告: fopen(welcome.txt) [function.fopen]: ストリームを開けませんでした:
C:webfoldertest.php の 2 行目にそのようなファイルまたはディレクトリはありません。上記のようなエラー メッセージがユーザーに表示されるのを避けるために、ファイルにアクセスする前にファイルが存在するかどうかを確認します。

コードは次のとおりですコードをコピー

ファイルが存在しない場合は、次のようなエラー メッセージが表示されます:

ファイルが見つかりません 上記のコードは、単純なエラー処理メカニズムを使用してエラー後にスクリプトを終了するため、前のコードよりも効率的です。

ただし、単にスクリプトを終了することが常に適切なアプローチであるとは限りません。エラーを処理するための代替 PHP 関数を調べてみましょう。

カスタムエラー処理関数を見てみましょう

if(!file_exists("welcome.txt"))
{
die("ファイルが見つかりません");
}
それ以外
{
$file=fopen("welcome.txt","r");
}
?>

コードは次のとおりです コードをコピー

関数 myErrorHandler($errno, $errstr, $errfile, $errline){
If(!(error_reporting() &$errno)){return;}
スイッチ ($errno){
ケース E_USER_ERROR:
echo "私のエラー [$errno] $errstr
";
echo "エラー行: $errline ファイル: $errfile
";
echo " PHP バージョン: " .PHP_VERSION ." (" .PHP_OS .")
";
休憩;
ケース E_USER_WARNING:
echo "私の警告 [$errno] $errstr
";
休憩;
ケース E_USER_NOTICE:
echo "私の通知 [$errno] $errstr
";
休憩;
デフォルト:
echo "不明なエラーの種類: [$errno] $errstr
";
休憩;
}
true を返します;
}

functiontrigger_test($age){//エラーをスローする関数をテストします
If($age <= 0 || $age > 999)trigger_error("不正な年齢: $age 歳", E_USER_ERROR);
If($age If($age > 40 && $age }
//エラーを単純かつ均一に処理する場合:
$errorHandler = set_error_handler("myErrorHandler");
trigger_test(1000);//エラーレベルerrorをスローします


function myError($errno, $errstr, $errfile, $errline){
Print_r(func_get_args());
//詳しい処理方法
}
関数 myWarning($errno, $errstr, $errfile, $errline){
Print_r(func_get_args());
//詳しい処理方法
}

関数 myNtice($errno, $errstr, $errfile, $errline){
Print_r(func_get_args());
//具体的な処理方法
}

//異なるエラーレベルを個別に処理したい場合:

コードは次のとおりです コードをコピー
set_error_handler('myError',E_USER_ERROR);
set_Exception_handler('myWarning',E_USER_WARNING);
set_Exception_handler('myNtice',E_USER_NOTICE);

trigger_error('意図的にエラー、または重大なエラーをスローしました!', E_USER_ERROR);

以下にいくつかのPHPエラーコードの詳細な説明を添付します

パラメータ 説明
エラーレベル

必須。ユーザー定義エラーのエラー報告レベルを指定します。値である必要があります。

以下の表を参照してください: エラー報告レベル。

エラーメッセージ 必須。ユーザー定義エラーのエラー メッセージを指定します。
エラーファイル オプション。エラーが発生したファイルの名前を指定します。
error_line オプション。エラーが発生した行番号を指定します。
エラーコンテキスト オプション。エラーが発生したときに使用されていた各変数とその値を含む配列を指定します。

エラー報告レベル
これらのエラー レポート レベルは、エラー ハンドラーが処理するように設計されているさまざまな種類のエラーです。

価値 定数 説明
2 E_警告 致命的ではない実行時エラー。スクリプトの実行を一時停止しないでください。
8 E_NOTICE

実行時の通知。

スクリプト検出エラーが発生する可能性がありますが、スクリプトが正常に実行されているときに発生することもあります。

256 E_USER_エラー ユーザーが生成した致命的なエラー。これは、プログラマが PHP 関数trigger_error()を使用して設定する E_ERROR に似ています。
512 E_USER_警告 致命的ではないユーザー生成の警告。これは、プログラマが 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 の一部です)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629638.html技術記事 PHP 開発では、通常、PHP の組み込みエラー処理メソッドを使用して一部のエラーを処理しますが、一部のエラーについては、システムの組み込みでは解決できない問題を解決するために、いくつかのエラー処理メカニズムをカスタマイズする必要があります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。