2011-12-16 94 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()); 
} 

上述两个例子中的哪一个将是一个适当的用例,如果两者都是?

+1

看看这个问题的最佳答案:[为什么以及如何使用此示例PHP代码中的异常?](http://stackoverflow.com/questions/935490/why-and-how-would-you-use-例外功能于该样品的PHP代码) – 2011-12-16 20:08:22

回答

1

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

[登录失败可能对用户的尽头异常(如果用户有理由期待登录无条件地工作)!]

典型的例外情况是运行内存,磁盘空间不足,数据库连接出现错误,或者在读取或写入文件期间发生错误。所有这些都是你通常希望工作的东西,所以错误是一个特殊的情况。

查看my previous answer了解更多详情。