例外 - 用户通知或错误记录?

时间:2011-12-16 20:05:52

标签: php exception error-handling

我正在试图弄清楚应该使用哪些例外;记录应用程序错误,或显示用户错误,如果两者都有,我应该如何区分和处理用户错误(例如登录失败)和应用程序错误(例如连接到数据库失败)和异常。

例如,假设用户尝试登录,但失败(用户错误):

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());
}

以上两个例子中的哪一个是合适的用例,如果有的话?

1 个答案:

答案 0 :(得分:1)

例外情况是在程序的一部分上发出异常行为。在正常操作期间,您的程序通常会抛出异常。像登录失败这样的东西是登录机制的正常结果,而不是例外。

[登录失败可能是用户结束时的例外(如果用户有理由期望登录无条件地工作)!]

典型的异常情况是内存不足,磁盘空间不足,数据库连接错误或读取或写入文件时出错。所有这些都是你通常希望工作的东西,因此错误存在异常情况。

有关详细信息,请参阅my previous answer