正しい書き方:
1. PHP エラーを処理する 3 つの方法 方法 1、単純な die() ステートメント。 exit(); と同等。 例:
簡潔に書くと:
方法 2、カスタムエラーとエラートリガー 1. エラー ハンドラー (カスタム エラー、通常は構文エラーの処理に使用されます) カスタム エラー関数 (ハンドラー) を作成します。この関数は、少なくとも 2 つのパラメーター (error_level および errormessage) を処理できる必要がありますが、最大 5 つのパラメーター (error_file、error_line、 エラーコンテキスト) 文法: 関数 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_通知 実行時の通知。 スクリプト検出エラーが発生する可能性がありますが、スクリプトが正常に実行されているときに発生することもあります。 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 より大きい場合、エラーとみなされます。 伝統的な方法:
set_error_handler('myerror',E_USER_WARNING);//上記と同様、最初のパラメータはカスタム関数の名前、2 番目はエラーレベルです [ここでのエラーレベルは通常次の 3 つです :E_USER_WARNING、E_USER_ERROR、E_USER_NOTICE] //trigger_error を使用してカスタム エラー処理関数を使用できるようになりました 練習問題:
方法 3、エラー ログ デフォルトでは、php.ini の error_log 設定に従って、php はエラーレコードをサーバーのエラー記録システムまたはファイルに送信します。 error_log() 関数を使用すると、エラー レコードをファイルまたはリモートの宛先に送信できます。 文法: error_log(error[,type,destination,headers]) タイプ部分には通常 3 が使用されます。これは、元のコンテンツを上書きせずにファイルの末尾にエラー情報を追加することを意味します。 destination は宛先、つまり保存されたファイルまたはリモート宛先を表します。 例: error_log(“$error_info”,3,“errors.txt”); 2.PHP例外処理 1. 基本的な文法
2. 処理ハンドラーには次のものが含まれている必要があります。 Try – 例外を使用する関数は、「try」ブロック内に置く必要があります。例外がトリガーされない場合、コードは通常どおり実行を続行します。ただし、例外がトリガーされると、例外がスローされます。 Throw – 例外をトリガーする方法を指定します。各「スロー」は少なくとも 1 つの「キャッチ」に対応する必要があります。 Catch – 「catch」ブロックは例外をキャッチし、例外情報を含むオブジェクトを作成します 例外をトリガーします:
上記のコードは次のようなエラーを報告します。 メッセージ: 値は 1 以下である必要があります 説明: 上記のコードは例外をスローし、それをキャッチします。 checkNum()関数を作成します。数値が 1 より大きいかどうかを検出します。その場合は、例外をスローします。 「try」ブロックで checkNum() 関数を呼び出します。 checkNum() 関数で例外がスローされる 「catch」コード ブロックは例外を受け取り、例外情報を含むオブジェクト ($e) を作成します。 この例外オブジェクトから $e->getMessage() を呼び出して、この例外からのエラー メッセージを出力します。 ただし、「すべてのスローはキャッチに対応する必要がある」という原則に従うために、見逃したエラーを処理する最上位の例外ハンドラーをセットアップできます。 set_Exception_handler() 関数は、キャッチされなかった例外をすべて処理するユーザー定義関数を設定できます
カスタム例外クラスを作成する
複数のキャッチを使用して、さまざまな状況でエラー情報を返すことができます
例外を使用するためのルール: 1. 例外処理が必要なコードを try コード ブロックに配置して、潜在的な例外をキャッチします。 2. 各 try または throw コード ブロックには、対応する catch コード ブロックが少なくとも 1 つ必要です。 3. 複数の catch コード ブロックを使用して、さまざまなタイプの例外をキャッチします。 4. 例外は、try コード内の catch コード ブロックで再スローできます。 一文を覚えておいてください: 例外がスローされた場合は、それをキャッチする必要があります。 |