【问题标题】:Overriding PEAR error handler覆盖 PEAR 错误处理程序
【发布时间】:2010-06-08 13:00:53
【问题描述】:

我目前正在开发一个需要大量外部库的应用程序。我现在的工作是设置一个独特的错误处理程序来管理每个错误。

到目前为止,我发现了 7 种不同类型的 PEAR 错误:

  • PEAR_ERROR_RETURN:
  • PEAR_ERROR_EXCEPTION:
  • PEAR_ERROR_CALLBACK:
  • PEAR_ERROR_PRINT:
  • PEAR_ERROR_TRIGGER:
  • PEAR_ERROR_DIE:

我只想处理严重错误(如原生 E*_ERROR)。唯一的问题是我完全不知道 PEAR 错误批评!这些名字更多地与处理它们的方式有关,而不是与它们的严重性有关……是否有关于它的真实文档?

我想更好的解决方案是使用他们的 pushErrorHandling,但我只是不明白如何使用它...如果有人知道,我将不胜感激...

提前致谢!

【问题讨论】:

    标签: php error-handling pear


    【解决方案1】:

    从您的问题看来,您需要一个函数来处理所有警告、错误和异常。

    对于 E_ERROR,我认为你不走运。这表明 PHP 无法从中恢复的致命运行时错误,因此您的脚本注定要失败。

    对于异常,您可以使用set_exception_handler("funcName"); 来处理程序执行中所有未捕获的异常。但是,这应该是处理异常的绝对最后手段。一个安全网,如果你愿意的话,对于任何从你的尝试/捕获的裂缝中溜走的东西。这样做的原因(以及像这样全局处理任何错误)的原因是您无法从异常中恢复,因为 set_exception_handler 不返回值并且它已经退出程序堆栈。

    在您的应用程序中大量使用 try/catch。这可能看起来乏味或浪费时间,但事实是您的程序在某些时候失败。无论你是多么优秀的程序员,这都是不可避免的。正确使用异常处理将允许您的应用程序正常关闭,甚至从异常中正确恢复。

    【讨论】:

    • 您好,感谢您的回复,确实,我必须设法集中处理错误/异常...我很清楚异常是最合适的解决方案,但是我根本无法更改所有外部代码依赖旧的错误处理(比如我拥有的 pear 版本)......
    猜你喜欢
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多