php 7の例外を処理する方法
php 7以前のバージョンと比較して、例外処理が大幅に改善されました。 コアメカニズムはtry...catch
ブロックのままです。 try
ブロック内で、例外をスローする可能性のあるコードを配置します。例外が発生した場合、実行は対応するcatch
ブロックにジャンプします。 複数のcatch
ブロックを使用して、さまざまな例外タイプを処理できます。 最後に、オプションのfinally
ブロックは、例外がスローされたかキャッチされているかに関係なく実行されます。
基本的な例は次のとおりです。
ブロックはこの例外をキャッチし、エラーメッセージを表示し、結果に関係なくメッセージが印刷されることを保証します。 汎用
try {
// Code that might throw an exception
$file = fopen("nonexistent.txt", "r");
if ($file === false) {
throw new Exception("Could not open file.");
}
fclose($file);
} catch (Exception $e) {
// Handle the exception
echo "An error occurred: " . $e->getMessage();
} finally {
// Code that always executes
echo "\nThis always runs.";
}
ログイン後にコピー
キャッチオールに依存する代わりに、可能な限り特定の例外を常に処理する必要があることに注意してください。 ここにいくつかの重要なポイントがあります:
-
具体的に:汎用
catch (Exception $e)
を使用するのではなく、特定の例外タイプをキャッチします。これにより、よりカスタマイズされたエラー処理が可能になり、予期しないエラーのマスキングが防止されます。 -
適切なレベルで例外を処理します。 例外は、適切に処理できるレベルまでバブルをかけます。 例外を早期的にキャッチすると、根本的な問題を隠すことができます。
- ログの例外:は、特に生産環境で常に例外を記録します。 これにより、デバッグと監視に貴重な情報が提供されます。 構造化された効率的なロギングのためにロギングシステム(モノロジーなど)を使用します。
- 意味のあるエラーメッセージを提供します。 「エラーが発生した」などの一般的なメッセージを避けてください。
例外を静かにキャッチしないでください。- 非常に具体的な理由(優雅に機能性を低下させるなど)がない限り、命令なしに静かに例外をキャッチしないようにします。 例外を無視すると、気付かれていないエラーやデータの腐敗が発生する可能性があります。
カスタム例外を使用してください。 これにより、コードの読みやすさと保守性が向上します。-
ブロックを使用して、- ブロック(データベース接続やファイルハンドルなど)をリリースしてブロック内で取得しました。 これは、リソースの漏れを防ぐために重要です。
finally
finally
通常の制御フローの例外を投げることは避けてください。 予想される条件に戻り値またはその他のコントロール構造を使用します。try
- PHP 7にカスタム例外を作成して、より良いエラー管理を行うにはどうすればよいですか? ベースクラスを拡張することにより、カスタム例外を作成します:
この例では、
を定義し、追加のコンテキストを格納するために
プロパティを追加します。 これにより、例外自体のエラーに関するより詳細な情報を含めることができ、エラー処理とデバッグの改善。
-
パフォーマンスの改善:PHP 7での例外処理は、一般に以前のバージョンよりも高速で効率的です。 以前のバージョンにはいくつかの矛盾がありました。
-
より良いエラー報告:PHP 7のエラーレポートメカニズムは、より詳細かつ有益なエラーメッセージを提供し、デバッグを支援します。以前のバージョンには、このハンドラーによってどの例外がキャッチされたかに関して矛盾がありました。
- 本質的に、PHP 7は既存の例外処理モデルを洗練および改善し、より堅牢で効率的で、使いやすくしました。 基本的なメカニズムは残りますが、根本的な実装と動作は大幅に強化されています。
以上がPHP 7の例外を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。