2012-11-29 37 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

相关问题