gpt4 book ai didi

尽管已被异常处理程序捕获,但仍显示 PhP 异常消息

转载 作者:行者123 更新时间:2023-11-30 00:59:45 24 4
gpt4 key购买 nike

我已经使用 set_exception_handler() 在我的 PhP 程序中设置了一个异常处理程序,它实际上工作得很好。从某种意义上说,它确实捕获了我未处理的异常,并且按照处理程序中的规定,记录了异常详细信息。那么,我为什么要提示呢?问题是,除了在异常处理程序中记录文件名和行号的正确详细信息之外,它还在浏览器中显示以下消息:

     Fatal error: Exception thrown without a stack frame in Unknown on line 0

我的信念是,也许这个特定的异常消息来自 stdout 流,而处理程序捕获的异常来自 stderr 流。另一种可能是上述消息是由错误处理模块发出的,而不是 PhP 的异常处理模块发出的。无论如何,我希望所有异常消息都发送到一个处理程序。我还设置了一个错误处理程序,如下所示:

    set_error_handler('SS_error_handler', E_ALL); 

此类情况如何处理? fatal error 消息是否来自 PhP 的错误消息报告模块?如果是这样,异常处理程序和错误处理程序之间是否存在重叠,因为它们都在某些错误/异常上被触发?如果相关的话,我想补充一点,这个特定的异常是由 MySQL PDO 语句引发的。

如有任何解释,我们将不胜感激。

最佳答案

请引用文档:http://php.net/manual/en/function.set-error-handler.php

The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.

因此,您不能使用 set_error_handler 来捕获异常,您应该使用正确的 try { } catch { } block 。

关于尽管已被异常处理程序捕获,但仍显示 PhP 异常消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com