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