ホームページ  >  記事  >  バックエンド開発  >  PHP エラー処理: 例外をキャッチして処理する方法

PHP エラー処理: 例外をキャッチして処理する方法

PHPz
PHPzオリジナル
2023-08-07 10:49:212326ブラウズ

PHP エラー処理: 例外をキャッチして処理する方法

はじめに:
開発プロセス中、さまざまなエラーや例外に遭遇することがよくあります。 PHP の場合、エラーと例外の処理は、コードの堅牢性と信頼性を確保するための重要なタスクです。この記事では、PHP で例外をキャッチして処理する方法、およびエラー発生時に便利なプロンプトを表示する方法を説明します。

1. エラーと例外の概要
PHP では、エラーと例外は 2 つの異なる概念です。エラーは通常、構文エラー、メモリ オーバーフローなど、PHP インタープリタまたは基盤となるシステムによって発生します。例外は通常、未定義の変数の使用、存在しないファイルを開いたなど、独自のコードによって発生します。エラーまたは例外が発生すると、PHP インタープリターは適切なエラー ハンドラーまたは例外ハンドラーを見つけようとします。

2. エラー処理

  1. エラー報告レベル
    PHP では、エラー報告レベルを設定することでエラー情報を表示するかどうかを決定できます。エラー報告レベルには 4 つのオプション値があります。
  2. E_ERROR: スクリプトの実行を終了させる致命的なエラー。
  3. E_WARNING: 警告は生成されますが、スクリプトの実行は終了しない、致命的ではないエラー。
  4. E_NOTICE: 初期化されていない変数の使用などの一般的なヒント。
  5. E_ALL: すべてのエラー、警告、プロンプトを表示します。

コード内で error_reporting() 関数を使用して、エラー報告レベルを設定できます。たとえば、

// 显示所有错误、警告和提示信息
error_reporting(E_ALL);
  1. Customエラー処理プログラム
    PHP では、デフォルトのエラー処理メソッドの代わりにエラーを処理するようにエラー ハンドラーをカスタマイズできます。以下に示すように、set_error_handler() 関数を使用してカスタム エラー ハンドラーを設定できます。

    // 自定义错误处理程序
    function customError($errno, $errstr, $errfile, $errline) {
     echo "<b>Error:</b> [$errno] $errstr - $errfile:$errline";
    }
    
    // 设置自定义错误处理程序
    set_error_handler("customError");

カスタム エラー ハンドラーでは、エラー ハンドラーを設定できます。エラー レベルに基づいてエラー メッセージに基づいて対応するアクション (エラー ログの記録、電子メールの送信など) を実行します。

3. 例外処理

  1. 例外のスロー
    PHP では、throw ステートメントを使用して例外をスローできます。すでに定義されている例外クラスをスローすることも、新しい例外クラスを作成することもできます。以下は、例外をスローするサンプル コードです。

    // 抛出一个已定义的异常
    throw new Exception("Something went wrong.");
    
    // 创建一个新的异常类并抛出
    class CustomException extends Exception {
     public function __construct($message, $code = 0, Throwable $previous = null) {
         parent::__construct($message, $code, $previous);
     }
    }
    
    throw new CustomException("Something went wrong.");
  2. 例外のキャッチ
    PHP では、try...catch ステートメントを使用して例外をキャッチできます。そしてそれを異常に扱います。 try コード ブロック内のコードは例外を検出する必要があるコードであり、catch コード ブロック内のコードは例外が発生したときに実行されるコードです。以下は例外をキャッチするためのサンプル コードです。

    try {
     // 检测可能会发生异常的代码
     throw new Exception("Something went wrong.");
    } catch (Exception $e) {
     // 处理异常
     echo "Caught exception: " . $e->getMessage();
    }

コード ブロックでは、例外オブジェクトのメソッドを使用して例外情報を取得できます。 getMessage()メソッドなどで例外情報を取得できます。

    複数の例外キャプチャ
  1. PHP では、さまざまなタイプの例外をキャプチャし、さまざまな方法で処理できます。以下に示すように、複数の

    catch
    コード ブロックを使用して、さまざまな種類の例外をキャッチできます。 <pre class='brush:php;toolbar:false;'>try { // 检测可能会发生异常的代码 throw new Exception(&quot;Something went wrong.&quot;); } catch (CustomException $e) { // 处理自定义异常 echo &quot;Caught custom exception: &quot; . $e-&gt;getMessage(); } catch (Exception $e) { // 处理其他异常 echo &quot;Caught exception: &quot; . $e-&gt;getMessage(); }</pre>

  2. 上記のコードでは、
がスローされた場合 CustomException

タイプの例外は最初の catch コード ブロックに入ります。他のタイプの例外がスローされた場合は、2 番目の catch コード ブロックに入ります。 4. エラーおよび例外処理のベスト プラクティス

PHP 開発におけるエラーおよび例外処理のベスト プラクティスは次のとおりです:


エラー レポートをオンにします: in In開発環境では、潜在的な問題を適時に検出するために、すべてのエラー、警告、プロンプト メッセージをオンにすることをお勧めします。ただし、運用環境では、重大なエラー メッセージのみを表示する必要があります。これは、エラー レポート レベルを
    E_ALL & ~E_NOTICE
  • に設定することで実現できます。 カスタム エラー ハンドラーを使用する: エラーをより適切に追跡および記録するには、カスタム エラー ハンドラーを使用し、問題追跡のためにエラー情報をログに記録することをお勧めします。
  • 意味のある例外をスローする: 予見可能な例外が発生した場合、発生した問題をより適切に表現し、例外をキャッチしたときに適切に応答できるようにするために、意味のあるカスタム例外をスローする必要があります。
  • 結論:
エラーと例外の処理は、PHP 開発に不可欠な部分です。エラー状況は、適切なエラー報告レベルを設定し、カスタム エラー ハンドラーを使用することで、より適切に処理できます。例外のスローとキャッチは、プログラム内で制御可能な例外を処理し、有用なプロンプト情報を提供するのに役立ちます。実際の開発プロセスでは、コードの堅牢性と信頼性を向上させるために、PHP が提供するエラー処理および例外処理メカニズムを最大限に活用する必要があります。


上記は、PHP のエラー処理と例外処理について簡単に説明したものです。お役に立てれば幸いです。

以上がPHP エラー処理: 例外をキャッチして処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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