2012-11-29 42 views

回答

11

否,trigger_error()不會停止執行,除非您將第二個參數作爲E_USER_ERROR傳遞。默認情況下,它會觸發警告。通話結束後的某個時刻您必須有錯誤。

觸發警告:

trigger_error("CTest message"); // defaults to E_USER_NOTICE 

觸發致命錯誤:

trigger_error("Test message", E_USER_ERROR); 
+1

是的第二個參數是E_USER_ERROR:事實上,我正在測試會話銷燬,垃圾收集器成功刪除數據庫會話數據,並且當我嘗試重新加載創建會話的頁面時,觸發器錯誤被引發! – pheromix

+2

'E_USER_ERROR'將停止執行,刪除參數或更改爲E_USER_NOTICE – MrCode

+2

如果您設置自定義錯誤處理程序,則可以通過不返回'false'來允許E_USER_ERROR繼續執行。 – Pacerier

1

這取決於你傳遞給trigger_error()功能,$error_type第二個參數是。有些會顯示錯誤並停止執行,其他人會顯示錯誤並繼續(請注意,顯示也基於您的error_reportingdisplay_errors設置)。

舉例來說,如果你撥打:

trigger_error('This is an error', E_USER_ERROR); 

你的腳本將停止執行。

但是,如果您撥打:

trigger_error('This is a warning', E_USER_WARNING); 

你的腳本就不會停止。

默認情況下,trigger_error()使用E_USER_NOTICE不會停止執行。

錯誤類型的完整列表可以找到here

+0

它只適用於E_USER系列常量 – astroanu

+0

trigger_error不能與E_ERROR或E_WARNING一起使用。因爲trigger_error的php文檔說它只適用於E_USER系列常量。 – astroanu

相關問題