根据我对PHP文档的理解,设置自定义错误处理程序(无法捕获所有错误)会停用默认的php错误处理程序(我猜这可以捕获所有错误:)。
如果这是正确的,是否有任何设置自定义错误处理程序的目的?我总是保持error_reporting(-1),所以我应该在错误日志中得到所有错误,对吧?
至于用户体验,我无法看到以自定义方式显示这些错误的目的 - 为什么您希望用户看到它们?在制作中,我总是将display_errors设置为off。
答案 0 :(得分:4)
在生产中,您可能希望在网站崩溃时告诉用户某些内容,set_error_handler
提供了一种呈现漂亮错误消息的方法,同时防止用户看到代码等丑陋的内容行号。它捕获常规PHP错误处理程序捕获的任何运行时错误。
没有理由避免使用set_error_handler
,当发生错误时,只需显示 nothing 当然更可取。
答案 1 :(得分:3)
设置自定义错误处理程序是为了设置一个catch-all处理程序,它处理其他地方未处理的错误。 可以捕获所有错误,除了那些根本没有运行脚本的错误(例如致命的语法错误)。
我还应该指出,如果从错误处理函数返回false
,那么内置的PHP错误处理程序将介入。
您可能希望在应用程序中对特定类型的异常进行特殊记录。
答案 2 :(得分:3)
如果这是正确的,是否有任何设置自定义错误处理程序的目的?我总是保持 error_reporting(-1),所以我应该在错误日志中得到所有错误,对吧?
error_reporting指示应报告哪些错误(例如警告,通知等)。这与它们出现在日志中无关;如果将error_reporting设置为0,则不会记录。如果您希望将其记录,但不显示给客户,请使用display_errors = Off。
至于用户体验,我无法看到以自定义方式显示这些错误的目的 - 为什么您希望用户看到它们?在制作中,我总是将display_errors设置为off。
我希望看到一条“某事”出错的信息,而不是看到“白屏死机”。使用自定义错误处理程序可能很简单。所以,是的,它确实有目的。