2011-12-16 5 views
1

私は例外がために使用すべきかを把握しようとしています。アプリケーションエラーをログに記録する、またはユーザー・エラーを表示し、そして両方の場合、私は区別し、ユーザー・エラー(例えば、ログインに失敗した)との例外を除いて、アプリケーションエラー(データベースに接続するために、例えば、障害)を処理する方法。例外 - ユーザーの通知またはエラーログのため?

if(!$user->login($_POST)) { 
    //$user->login() throws an Exception, throw new Exception("failed login"), on fail. 
    catch(Exception $e) { 
     print $e->getMessage(); 
    } 
} 

それとも、データベースエラーが発生する(エラーログ):

public function query($query) { 
$this->resource = mysql_query($query) or throw new Exception("Database error:" . mysql_error()); 
} 
例えば

、のは、ユーザーが(ユーザー・エラー)ログインしようとしたが、失敗したとしましょう

いずれかの場合、上記の2つの例のどれが適切なユースケースになりますか?

+1

この質問のトップの答えをチェックしてください:[なぜ、どのようにあなたは、このサンプルのPHPコードで例外を使うのでしょうか?](http://stackoverflow.com/questions/935490/why-and-how-would-you-use- PHPコードの例外) –

答えて

1

例外は、プログラムの一部に異例の行動を知らせるためのものです。通常動作時には、あなたのプログラムは通常、すべての例外をスローしませ必要があります。ログインに失敗したようなものは、ログインメカニズムの通常の結果であり、例外ではありません。

[Aは、(ユーザーがログインが無条件に動作することを期待する理由を持っていた場合)ログインがユーザーの終わりには例外かもしれなかった!]

典型的な例外的な状況は、メモリが不足していますディスク領域が不足している、データベース接続のエラー、またはファイルの読み取りまたは書き込み中のエラーが含まれます。これらはすべて、通常は動作すると予想されるものなので、例外的な状態があります。

は詳細についてはmy previous answerを参照してください。

関連する問題