PHP エラー処理: 例外をキャッチして処理する方法
PHP エラー処理: 例外をキャッチして処理する方法
はじめに:
開発プロセス中、さまざまなエラーや例外に遭遇することがよくあります。 PHP の場合、エラーと例外の処理は、コードの堅牢性と信頼性を確保するための重要なタスクです。この記事では、PHP で例外をキャッチして処理する方法、およびエラー発生時に便利なプロンプトを表示する方法を説明します。
1. エラーと例外の概要
PHP では、エラーと例外は 2 つの異なる概念です。エラーは通常、構文エラー、メモリ オーバーフローなど、PHP インタープリタまたは基盤となるシステムによって発生します。例外は通常、未定義の変数の使用、存在しないファイルを開いたなど、独自のコードによって発生します。エラーまたは例外が発生すると、PHP インタープリターは適切なエラー ハンドラーまたは例外ハンドラーを見つけようとします。
2. エラー処理
- エラー報告レベル
PHP では、エラー報告レベルを設定することでエラー情報を表示するかどうかを決定できます。エラー報告レベルには 4 つのオプション値があります。 - E_ERROR: スクリプトの実行を終了させる致命的なエラー。
- E_WARNING: 警告は生成されますが、スクリプトの実行は終了しない、致命的ではないエラー。
- E_NOTICE: 初期化されていない変数の使用などの一般的なヒント。
- E_ALL: すべてのエラー、警告、プロンプトを表示します。
コード内で error_reporting()
関数を使用して、エラー報告レベルを設定できます。たとえば、
// 显示所有错误、警告和提示信息 error_reporting(E_ALL);
Customエラー処理プログラム
PHP では、デフォルトのエラー処理メソッドの代わりにエラーを処理するようにエラー ハンドラーをカスタマイズできます。以下に示すように、set_error_handler()
関数を使用してカスタム エラー ハンドラーを設定できます。// 自定义错误处理程序 function customError($errno, $errstr, $errfile, $errline) { echo "<b>Error:</b> [$errno] $errstr - $errfile:$errline"; } // 设置自定义错误处理程序 set_error_handler("customError");
ログイン後にコピー
カスタム エラー ハンドラーでは、エラー ハンドラーを設定できます。エラー レベルに基づいてエラー メッセージに基づいて対応するアクション (エラー ログの記録、電子メールの送信など) を実行します。
3. 例外処理
例外のスロー
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.");
ログイン後にコピー例外のキャッチ
PHP では、try...catch
ステートメントを使用して例外をキャッチできます。そしてそれを異常に扱います。try
コード ブロック内のコードは例外を検出する必要があるコードであり、catch
コード ブロック内のコードは例外が発生したときに実行されるコードです。以下は例外をキャッチするためのサンプル コードです。try { // 检测可能会发生异常的代码 throw new Exception("Something went wrong."); } catch (Exception $e) { // 处理异常 echo "Caught exception: " . $e->getMessage(); }
ログイン後にコピー
コード ブロックでは、例外オブジェクトのメソッドを使用して例外情報を取得できます。 getMessage()
メソッドなどで例外情報を取得できます。
- 複数の例外キャプチャ
- PHP では、さまざまなタイプの例外をキャプチャし、さまざまな方法で処理できます。以下に示すように、複数の
catch
PHP 開発におけるエラーおよび例外処理のベスト プラクティスは次のとおりです:
コード ブロックを使用して、さまざまな種類の例外をキャッチできます。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>try { // 检测可能会发生异常的代码 throw new Exception("Something went wrong."); } catch (CustomException $e) { // 处理自定义异常 echo "Caught custom exception: " . $e->getMessage(); } catch (Exception $e) { // 处理其他异常 echo "Caught exception: " . $e->getMessage(); }</pre><div class="contentsignin">ログイン後にコピー</div></div>上記のコードでは、 がスローされた場合 CustomException<p> タイプの例外は最初の <code>catch
コード ブロックに入ります。他のタイプの例外がスローされた場合は、2 番目のcatch
コード ブロックに入ります。4. エラーおよび例外処理のベスト プラクティス
エラー レポートをオンにします: in In開発環境では、潜在的な問題を適時に検出するために、すべてのエラー、警告、プロンプト メッセージをオンにすることをお勧めします。ただし、運用環境では、重大なエラー メッセージのみを表示する必要があります。これは、エラー レポート レベルを- E_ALL & ~E_NOTICE
- に設定することで実現できます。
カスタム エラー ハンドラーを使用する: エラーをより適切に追跡および記録するには、カスタム エラー ハンドラーを使用し、問題追跡のためにエラー情報をログに記録することをお勧めします。
- 意味のある例外をスローする: 予見可能な例外が発生した場合、発生した問題をより適切に表現し、例外をキャッチしたときに適切に応答できるようにするために、意味のあるカスタム例外をスローする必要があります。
- 結論:
上記は、PHP のエラー処理と例外処理について簡単に説明したものです。お役に立てれば幸いです。以上がPHP エラー処理: 例外をキャッチして処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
- に設定することで実現できます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ミドルウェアを使用して Go 関数のエラー処理を改善する: 関数呼び出しをインターセプトして特定のロジックを実行できるミドルウェアの概念を紹介します。カスタム関数でエラー処理ロジックをラップするエラー処理ミドルウェアを作成します。ミドルウェアを使用してハンドラー関数をラップし、関数が呼び出される前にエラー処理ロジックが実行されるようにします。エラーの種類に基づいて適切なエラー コードを返します。 едоточитьсянаобработкеозибо

C++ では、例外処理は try-catch ブロックを通じてエラーを適切に処理します。一般的な例外の種類には、実行時エラー、論理エラー、範囲外エラーが含まれます。ファイルを開くエラー処理を例に挙げます。プログラムがファイルを開くのに失敗すると、例外がスローされ、エラー メッセージが出力され、catch ブロックを通じてエラー コードが返されます。これにより、プログラムを終了せずにエラーが処理されます。例外処理には、エラー処理の集中化、エラーの伝播、コードの堅牢性などの利点があります。

C++ クラス設計におけるエラー処理とログ記録には、次のものが含まれます。 例外処理: カスタム例外クラスを使用して例外をキャッチして処理し、特定のエラー情報を提供します。エラー コード: 整数または列挙を使用してエラー状態を表し、戻り値で返します。アサーション: 事前条件と事後条件を確認し、条件が満たされない場合は例外をスローします。 C++ ライブラリのロギング: std::cerr および std::clog を使用した基本的なロギング。外部ログ ライブラリ: レベル フィルタリングやログ ファイル ローテーションなどの高度な機能を提供するサードパーティ ライブラリを統合します。カスタム ログ クラス: 独自のログ クラスを作成し、基礎となるメカニズムを抽象化し、さまざまなレベルの情報を記録するための共通インターフェイスを提供します。

PHP の最適なエラー処理ツールとライブラリには次のものがあります。 組み込みメソッド: set_error_handler() および error_get_last() サードパーティ ツールキット: Whoops (デバッグとエラーのフォーマット) サードパーティのサービス: Sentry (エラーの報告と監視) サードパーティライブラリ: PHP-error-handler (カスタム エラー ログおよびスタック トレース) および Monolog (エラー ログ ハンドラー)

Golang では、エラー ラッパーを使用して、元のエラーにコンテキスト情報を追加することで新しいエラーを作成できます。これを使用すると、さまざまなライブラリまたはコンポーネントによってスローされるエラーの種類を統一し、デバッグとエラー処理を簡素化できます。手順は次のとおりです。errors.Wrap 関数を使用して、元のエラーを新しいエラーにラップします。新しいエラーには、元のエラーのコンテキスト情報が含まれています。 fmt.Printf を使用してラップされたエラーを出力し、より多くのコンテキストとアクション性を提供します。異なる種類のエラーを処理する場合は、errors.Wrap 関数を使用してエラーの種類を統一します。

Go 関数の単体テストでは、エラー処理に 2 つの主な戦略があります。1. エラーをエラー タイプの特定の値として表現し、期待値をアサートするために使用します。2. チャネルを使用してエラーをテスト関数に渡します。これは、同時実行コードのテストに適しています。実際のケースでは、関数が負の入力に対して 0 を返すようにするために、エラー値戦略が使用されます。

Go でのエラー処理のベスト プラクティスには、エラー タイプの使用、常にエラーを返す、エラーのチェック、複数値の戻り値の使用、センチネル エラーの使用、およびエラー ラッパーの使用が含まれます。実用的な例: HTTP リクエスト ハンドラーで、ReadDataFromDatabase がエラーを返した場合は、500 エラー応答を返します。

Go 関数では、非同期エラー処理はエラー チャネルを使用して、ゴルーチンからエラーを非同期に渡します。具体的な手順は次のとおりです。 エラー チャネルを作成します。 goroutine を開始して操作を実行し、非同期でエラーを送信します。チャネルからエラーを受信するには、select ステートメントを使用します。エラー メッセージの印刷やログ記録など、エラーを非同期的に処理します。このアプローチでは、エラー処理が呼び出しスレッドをブロックせず、実行をキャンセルできるため、同時コードのパフォーマンスとスケーラビリティが向上します。
