2011-12-16 38 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瞭解更多詳情。