【发布时间】:2011-11-17 07:48:59
【问题描述】:
上下文:
我有三个应用程序环境:开发(本地)、测试/登台(产品服务器)、生产。该应用程序知道哪个是哪个。暂存和生产的错误报告均为 0,因此永远不会显示错误。在 dev 上,我想立即看到错误,我想在它们发生的地方看到它们,所以不是在某些日志中,而是在代码的结果中。
但是,我不想看到我用@ 明确抑制的错误。我一直在使用fsockopen,当它无法连接时会发出警告。我接受无连接,但不想看到错误。甚至在开发中也没有。
显然所有错误都会通过自定义错误处理程序,即使它们在代码中被抑制。
我的错误处理程序只有 4 个参数:errno、error、file、line。从那些我看不出错误是否最初被抑制。如果我可以在那里看到,我可以选择是否打印错误(现在我总是这样做,如果 env=dev)。
有什么想法吗?或者也许关于如何完全忽略被抑制的错误(这样它们甚至不会到达自定义错误处理程序)?
【问题讨论】:
-
从技术上讲,我显然是在谈论通知和警告而不是错误,因为错误是致命的(除了可恢复的致命错误,不管它们是什么)。
-
我将如何使用异常? PHP 选择是否抛出错误或异常(或警告或通知等)。 (我没有使用自定义错误处理程序来制造所有 php 错误 -> 异常。)我希望 PHP 只使用异常......
-
@stereofrog 到什么目的?我仍然必须在错误处理程序中捕获被抑制的错误,而不是一直抛出异常......我不明白这一点。效率也不高。
标签: php error-handling