Web サイトの完全にオープンな性質により、Web サイトは従来のソフトウェアよりも「システムが常に正常に動作しているように見える」ことを実現することを期待しているため、正しいプログラム エラー処理方法を採用することが特に重要です。理論的には、設計が十分に完璧で、開発者が十分に注意を払っていれば、プログラム エラーの可能性は 0 です。
しかし、現実はその逆で、複雑なビジネス ロジック、異なるハードウェア環境、または信頼できないユーザー入力によってプログラム エラーが発生する可能性があります。サービスがダウンしています。したがって、少し複雑なシステムでは、完全なエラー メカニズムが必要になります。
php5 より前では、例外のサポートが不足していました。複雑な開発を行う場合、「エラー値の処理+ログの記録」という比較的原始的な処理形式が採用されることが多いです。
例:
コードをコピー コードは次のとおりです:
function getResult($a,$b)
{
....
致命的なエラーが発生した場合
return "error_type1"
; .. ...
}
$result = getResult($a,$b);//理論的には、getResult 関数は常に $result を正しく返すことができます
if($result=='error_type1')//ただし、いくつかの特別な場合がありますcase .$result は正常に取得できません
{
writeLog('result is empty!');// ログを記録します
die();// または他のより「フレンドリーな」処理方法
}
理論的には、「 「エラー値の処理 + ログの記録」という方法でも目的を達成できます (実際、これは真実です。php3 と php4 では、十分に複雑で成功したシステムが多数あります。それらはあらゆる状況を考慮しているため、ログを記録する必要はありません)。しかし、テクノロジーは常に進歩します。言うまでもなく、開発者の大部分は、優れた人のような厳格で完璧な思考を持っていないため、「プログラムエラーにどう対処するか」という問題については、依然として真剣に考えなければなりません。
上記の「エラー処理 + ログ記録」方法には次の欠点があります:
1 エラー条件が多すぎる場合、対応するエラー処理コードを多数追加する必要があり、プログラムの可読性が大幅に損なわれます。プログラムが「途切れ途切れ」に見えます。
2 プログラムのロジックが非常に複雑な場合 (たとえば、getResult2() 関数で getResult() を呼び出すなど、プログラムの関数呼び出しが非常に複雑である場合、またはさらに複雑なマルチレベルのネスト状況である場合)、エラー値の転送処理は疲れます。エラーを効果的に処理できるようにするには、次のことを確認する必要があります。 エラー値がロスレスな方法で配信される。
そこで、この原始的なエラー処理方法を変更します。例外処理メカニズムの導入により、次のような嬉しい変更が加えられるでしょう:
1 コードの可読性が大幅に向上します。プログラムを開発するとき、論理的思考は非常に一貫性のあるものになります。「疑わしい」場所では、例外をスローするだけで済みます。対処方法としては、後から追加するのを待ってください。もちろん、プログラムの読者は中断を感じることはありません。
2 「誤った値を損失なく送信するにはどうすればよいか」という面倒で不快な問題を考える必要はありません。例外は上向きに伝播するため、関数が 2 層、3 層、またはそれ以上の深さでネストされていても問題はありません。外側の層で例外をキャッチする操作のみが必要です。
3 例外を自由にカスタマイズでき、さまざまなプログラムエラーをより適切に管理するために、機能に従って例外を分類できます。同時に、例外処理メソッドをより柔軟にカスタマイズすることもできます。例えばログ記録機能を例外クラスに実装します。
もちろん、例外を使用するかどうかはニーズによって異なります。 PHP の優れた機能の 1 つは、単純なロジックを備えた小規模なプロジェクトの場合、一般的なエラー値の処理方法を使用することで、より迅速にデプロイできる可能性があります。
上記は、Cultivation Computer Programmers の内容を含め、PHP プログラマーは「例外」の使い方も学ぶ必要があることについての紹介です。PHP チュートリアルに興味のある友人に役立つことを願っています。