PHP 開発で複雑なエラー ログと例外処理を処理する方法には、特定のコード サンプルが必要です
PHP 開発プロセスでは、エラー ログと例外処理が非常に重要です。エラー ログはプログラムの実行プロセス中のエラー情報を記録でき、例外処理はプログラム内の例外を効果的にキャプチャして処理できます。この記事では、複雑なエラー ログと例外処理を処理する方法を説明し、具体的なコード例を示します。
1. エラー ログの処理
エラー ログは、プログラムの実行中に発生したエラーや警告情報を記録するファイルです。 PHP では、エラー レポート レベルとカスタム エラー処理関数を設定することで、エラー ログ処理を実現できます。
PHP のエラー報告レベルは、error_reporting()
関数によって設定されます。問題を時間内に発見して解決できるように、開発環境ではエラー報告レベルを E_ALL
に設定することをお勧めします。
error_reporting(E_ALL);
PHP のエラー処理関数は、set_error_handler()
関数を通じて設定されます。カスタムエラー処理関数は、プログラムでエラーが発生したときに呼び出され、エラーの処理方法をカスタマイズできます。
次に、エラー情報をログ ファイルに書き込むカスタム エラー処理関数の簡単な例を示します。
function customErrorHandler($errno, $errstr, $errfile, $errline) { $log = "[" . date('Y-m-d H:i:s') . "] "; $log .= "Error: [$errno] $errstr in $errfile on line $errline" . PHP_EOL; error_log($log, 3, "error.log"); } set_error_handler("customErrorHandler");
上記のコードは、エラー情報をフォーマットし、## という名前のファイルに書き込みます。ログ ファイル内の #error.log。
try...catch 構造体を使用して例外をキャッチして処理できます。
class CustomException extends Exception { public function errorMessage() { $errorMessage = "[" . date('Y-m-d H:i:s') . "] "; $errorMessage .= "Error: " . $this->getMessage() . " in " . $this->getFile() . " on line " . $this->getLine() . PHP_EOL; error_log($errorMessage, 3, "exception.log"); } } function divide($dividend, $divisor) { if ($divisor == 0) { throw new CustomException("Division by zero"); } return $dividend / $divisor; } try { $result = divide(10, 0); echo "Result: " . $result; } catch (CustomException $e) { $e->errorMessage(); echo "An error occurred: " . $e->getMessage(); }
CustomException はカスタム例外クラスであり、PHP の組み込み
Exception クラスを継承し、
errorMessage( ) を書き換えます。方法。
divide() 関数では、除数が 0 の場合、カスタム例外オブジェクトがスローされます。
try ブロックで、
divide() 関数を呼び出します。例外が発生した場合、その例外は
catch ブロックによってキャプチャされ、処理されます。処理中に、カスタム例外クラスの
errorMessage() メソッドを呼び出して、例外情報をログ ファイルに書き込みます。
set_error_handler("customErrorHandler"); class CustomException extends Exception { public function errorMessage() { $errorMessage = "[" . date('Y-m-d H:i:s') . "] "; $errorMessage .= "Error: " . $this->getMessage() . " in " . $this->getFile() . " on line " . $this->getLine() . PHP_EOL; error_log($errorMessage, 3, "exception.log"); } } function divide($dividend, $divisor) { if ($divisor == 0) { throw new CustomException("Division by zero"); } return $dividend / $divisor; } try { $result = divide(10, 0); echo "Result: " . $result; } catch (CustomException $e) { $e->errorMessage(); echo "An error occurred: " . $e->getMessage(); }
以上がPHP 開発における複雑なエラー ログと例外処理に対処する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。