2013-05-29 53 views
0

在我的PHP代碼中,有幾種類型的異常。一個是'正常'Exception,另一個是PDOException。我正在使用set_exception_handler($handler)自動捕獲異常。單獨的PDO異常處理程序

有什麼辦法可以得到單獨的處理程序的異常和PDOException?
如果不是,我可以檢查處理程序中的異常類型嗎?

+0

爲什麼你想要它? –

+0

@YourCommonSense,因爲我想以與Exceptions不同的方式處理PDOException。我說一些愚蠢的東西嗎? – Keelan

+0

我很明白。爲什麼要以其他方式處理PDOException?或者更確切地說,你將如何處理PDO異常? –

回答

3

我想你應該有一個「全局」處理程序和分支。

set_exception_handler(function ($exception) { 
    if ($exception instanceof PDOException) { 
    handle_pdo_exception($exception); 
    return; 
    } 
    log($exception); 
}); 
2

謝謝你澄清你的問題。

我想你是在錯誤的假設問。

事實上,要麼正常的異常需要記錄到一個共同的error_log和PDOexception必須觸發一個通用的500錯誤頁面顯示給用戶。分開這些事情沒有意義。因此,您可以使用常見的異常處理程序來處理代碼中的所有異常事件。

+0

但我怎麼區分這兩者呢? – Keelan

+0

另一個答案解釋它。雖然我的答案的重點是,區分這些(實際上超過兩個實例)異常類型沒有意義。每個人都必須記錄,但每個人都必須觸發通用的503錯誤頁面才能顯示。 –