ホームページ >バックエンド開発 >PHPの問題 >phpは悪いコードを無視します

phpは悪いコードを無視します

PHPz
PHPzオリジナル
2023-05-06 17:47:07753ブラウズ

PHP は非常に人気のある Web プログラミング言語であり、その能力は柔軟性と使いやすさだけでなく、エラー処理メカニズムにも反映されています。 PHP コードでエラーが発生すると、PHP スクリプトはデフォルトでエラー メッセージをスローし、実行を停止しますが、場合によっては、これらのエラーを無視してスクリプトの実行を続行する必要があることがあります。では、PHP でエラーを無視するにはどうすればよいでしょうか?この記事では詳しく紹介していきます。

1. エラー レベル

PHP では、エラーは致命的なエラー、重大なエラー、警告などのさまざまなレベルに分類されます。エラー レベルが異なると、実行時の処理方法が異なります。致命的なエラーはスクリプトの実行を直接停止しますが、重大なエラーと警告はエラー メッセージをスローしますが、スクリプトの実行は停止しません。 PHP ではさまざまなエラー定数が定義されており、さまざまなエラー レベルに対応します。以下は、一般的な PHP エラー定数とそれに対応するエラー レベルです:

  1. E_ERROR 致命的なエラー
  2. E_WARNING 致命的ではないエラー
  3. E_PARSE 解析エラー
  4. E_NOTICE エラーに注意してください
  5. E_DEPRECATED 非推奨エラー
  6. E_STRICT 厳密なエラー

2. エラー処理

PHP には、エラーを処理するための関数がいくつか用意されています。エラーログ関数error_log()、例外スロー関数throw()、エラー情報表示関数error_reporting()など。もちろん、エラー処理関数をカスタマイズすることもできます。以下に、これらの機能の使用方法を簡単に紹介します。

(1) error_log()

error_log() 関数は、Apache の error_log ファイルなどのサーバー エラー ログ ファイルにエラー情報を記録するために使用されます。この関数には 3 つのパラメータがあります。

bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )

$message はエラー メッセージ、$message_type はエラー レベル (デフォルトは 0 で無視されます)、$destination はエラー ログ ファイルのパス、$extra_headers は次のとおりです。電子メールの追加ヘッダー情報を設定します。

(2) throw()

throw() 関数は、例外をスローするために使用されます。つまり、プログラムの実行を直接停止し、エラー メッセージを出力します。この関数には、例外オブジェクトのインスタンスであるパラメーターが 1 つあります。

(3) error_reporting()

error_reporting() 関数は、エラー報告レベルを設定するために使用され、エラー定数または複数のエラー定数のビットごとの OR 演算結果である 1 つのパラメータを持ちます。誤差定数。

以下は、error_reporting() 関数を使用して E_NOTICE レベルのエラーを無視する方法を示す簡単な例です。

error_reporting(E_ALL & ~E_NOTICE);

E_ALL と ~E_NOTICE に対してビットごとの AND 演算を実行すると、 E_NOTICE を除くすべてのエラー レベルこの設定の後、PHP スクリプトは E_NOTICE レベルのエラーを無視します。

(4) カスタムエラーハンドリング機能

PHP ではエラーハンドリング機能をカスタマイズすることができ、エラーログファイルのパスやエラー出力方法などをカスタマイズすることができます。エラー処理関数を設定するには、set_error_handler 関数を使用する必要があります。この関数には、カスタム処理関数の名前である 1 つのパラメーターがあります。

次は簡単な例です。

function custom_error_handler($errno, $errstr, $errfile, $errline) {
    error_log($errstr . "in" . $errfile . " on line " . $errline);
    return true;
}

set_error_handler("custom_error_handler");

このカスタム エラー処理関数は、エラー情報をサーバーのエラー ログ ファイルに書き込み、エラーが処理されたことを示す true 値を返します。

3. エラーを無視する

次に、PHP でエラーを無視する方法を見てみましょう。方法は非常に簡単で、@ 記号を使用して処理したくないエラーを無視するだけです。例:

$count = @file_get_contents("file.txt");

このステートメントは、ファイル「file.txt」の内容を読み取り、変数 $count に割り当てますが、ファイルが存在しないなど、ファイルの読み取り時にエラーが発生した場合は、または読み取り権限がない場合など、@ 記号を追加するとエラーを無視してスクリプトの実行を続行できます。

@ 記号を使用してエラーを無視すると、初期化されていない変数や不正な関数パラメーターなど、見つけにくいエラーが発生する可能性があるため、コードの安全性が低下することに注意してください。したがって、@ 記号は、これらのエラーが無視できると確信できる場合にのみ使用してください。

4. 概要

PHP でエラーを無視する方法は非常に簡単で、@ 記号を使用するだけです。ただし、@ 記号を使用すると、見つけにくいエラーが発生する可能性があるため、使用を避ける必要があります。エラーを無視したい場合は、set_error_handler() 関数を使用してエラー処理関数をカスタマイズするか、error_reporting() 関数を使用してエラー報告レベルを設定する必要があります。これにより、PHP プログラムのエラーをより柔軟かつ安全に処理できるようになります。

以上がphpは悪いコードを無視しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。