2013-11-22 42 views
1

我寫了一個類,其方法經常拋出一些異常 - 例如,如果給定的用戶ID不對應於用戶,則爲NoResultException,如果令牌錯誤則爲BadTokenException,如果電子郵件地址爲EmailTakenException已經註冊等。是否有可能使PHP異常非致命?

我想用它寫一個測試程序非常快。我感覺很懶,我不想寫try/catch塊。我現在可能會這樣做,但我仍然要問:是否可以更改PHP的行爲並使其成爲異常不會導致致命錯誤的原因?換句話說,我可以讓我的腳本捕捉異常並使用默認異常處理程序輸出它們(因爲我使用XDebug並且回溯很好),但是允許腳本完成執行嗎?然後,我只能看到錯誤消息(如「電子郵件地址已被佔用」),而不會停止打印頁面的其餘部分。

謝謝。

+0

[set_exception_handler](http://www.php.net/set_exception_handler)也許? –

+2

所以......你寫了一個拋出異常的類,但卻懶得實際捕獲你自己拋出的異常?所以......爲什麼要寫在例外中呢? –

+0

那麼,我會寫在生產中。我只是問是否有可能將異常處理爲非致命錯誤並繼續執行,以便在測試時可以打印異常和回溯,但繼續執行程序。我猜這不是。我無法使用'set_exception_handler'的原因是(a)沒有'get_exception_handler',所以我可以保留和調用XDebug的回溯,(b)沒有辦法讓'set_exception_handler'在它之後不立即終止腳本執行火災。 –

回答

0

你只能例外非致命的,如果你通過嘗試追上他們/趕上塊,你剛纔說你懶得這麼做?這沒有意義。您要麼使用trigger_error,要麼添加try/catch塊。

0

通過創建set_exception_handler函數來處理它們,可以使未捕獲的異常非致命。大多數情況下,我只是顯示一個HTTP 500系統錯誤頁面。如果有一種方法可以恢復(我不確定爲什麼你不會在try/catch中做到這一點),你可以通過查看異常中的Exception類和錯誤代碼號來實現。