錯誤和異常有什麼區別?異常和錯誤之間的區別?
我已經在網上閱讀了大量的資源和一些書籍,但是提供的解釋並不是很全面。因此,我仍然感到困惑。
謝謝!
編輯: 它看起來像我問了兩個問題,可能會令人困惑。我想要回答的主要問題是錯誤和例外之間的區別。所以,我已經編輯了上述更具體。謝謝大家的答案。
錯誤和異常有什麼區別?異常和錯誤之間的區別?
我已經在網上閱讀了大量的資源和一些書籍,但是提供的解釋並不是很全面。因此,我仍然感到困惑。
謝謝!
編輯: 它看起來像我問了兩個問題,可能會令人困惑。我想要回答的主要問題是錯誤和例外之間的區別。所以,我已經編輯了上述更具體。謝謝大家的答案。
錯誤處理沒有「應該」或「最佳」的方式。
一般來說,有兩種類型的錯誤
請注意,這些都與您用來處理錯誤的特定PHP機制無關。
如果您使用例外... 然後我建議全面使用例外。Register an exception handler並讓它做大部分工作 - including other PHP errors。無效的登錄詳細信息?
class InvalidLoginException extends Exception
{
protected $message = 'Login information is incorrect. Please try again.';
}
然後你有一堆的實施選擇。或者,如果您願意,可以讓異常處理程序執行此操作。甚至在更靈活的方式
class ApplicationErrorException extends Exception{}
class InvalidLoginException extends ApplicationErrorException
{
protected $message = 'Login information is incorrect. Please try again.';
}
然後,在異常處理程序
if ($exception instanceof ApplicationErrorException)
{
// dislpay error message
}
但例外是不是唯一的方式,和by some not even considered a good way。
合併你應該把你的文章的最後一行放在頂部並加粗。對於初學者來說,瞭解爲什麼以及何時應該使用某些東西,而不是僅僅告訴他們如何去做,這一點更爲重要。 – 2010-05-27 18:11:49
都沒有。當代碼做錯了時,異常和錯誤是有用的。用戶或多或少地期望輸入不正確的登錄信息。檢查用戶名/密碼是否正確,如果不正確,請將用戶重定向回登錄頁面(header('location:login.php?failed=1');
),然後如果設置了$_GET['failed']
,則顯示一條消息。這將是最簡單的方法。
關於例外/錯誤...你通常應該堅持例外。你拋出一個異常,然後你抓住它並處理它。我認爲trigger_error
更適用於在您不知道如何處理catch塊中的錯誤時將錯誤傳播回客戶端。
首先,異常可以繼續執行腳本。此外,trigger_error始終會報告觸發trigger_error的行和文件。
請注意,您只能在特殊情況下使用例外。無效的用戶輸入始終發生,應該是預期的。 – 2010-05-27 18:09:33
重複。應該與http://stackoverflow.com/questions/841500/php-exceptions-vs-errors – Kenaniah 2010-05-27 18:17:51